JS学习笔记-构造函数篇

Posted DreamSeeker

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS学习笔记-构造函数篇相关的知识,希望对你有一定的参考价值。

创建实例
funtion Fn (){
    var num = 10;    
    this.x = 100;
    this.getX = function(){
        console.log(this.num); 
    }
}
var f1 = new Fn;
f1.getX();
最后执行的结果是:undefined
说明: 类有普通的里面,当函数执行的时候,var num只是当的形成的私有作用域中的私有变量而已,它和我们的f1这个实例没有任何的关系,只有this.xxx=xx才相当于给f1增加私有的属性和方法,才和我们的f1有关系;

funtion Fn (){
    var num = 10;    
    this.x = 100;
    this.getX = function(){
        console.log(this.num); 
    }
    return false;
    return {"name","123"};
}
var f1 = new Fn;
console.log(f1);
说明:在构造函数欧式中,浏览器会默认的把我们的实例返回(返回的是一个数据类型的值);如果我们手动写了return返回:
    返回的是一个基本数据类型就那个的值,房钱实例是不变的,例如:return 100;我们的f1还是当前Fn的实例
    返回的是一个引用数据类型的值,当前的实例会被自己的返回值给替换掉,例如返回:return {"name","123"};我们的f1就不再是Fn的实例了,而是对象{“name”,"123"};

funtion Fn (){
    var x= 10;    
    this.getX = function(){
        console.log(this.x); 
    }
}
var f1 = new Fn;
说明:检测某个实例是否属于这个类---》instanceof
console.log(f1.instanceof Fn);//-->true
这方法可以检测数据类型:
f1 instanceof Array -> false;
f1 instanceof Object  -> true
这个检测数据类型的方法可以和typeof比较
funtion Fn (){
    var x= 10;    
    this.getX = function(){
        console.log(this.x); 
    }
}
var f1 = new Fn;
var f2 = new Fn;
说明 : f1和f2都是Fn这个类的一个实例,都拥有x和getX两个属性,但是这个属性是各自的私有属性,所以console.log(f1.getX ==== f2.getX);//--> false

in 检测某一个属性是否属于这个对象(attr in object),不管是私有的属性还是公用的属性,只要存在,用in检测都是true

//hasOwnProperty:用来检测某一个属性是否是这个对象的“私有属性”,这个方法只能检测私有属性
console.log(f1.hasOwnProperty("getX"));-->true  "getX"是f1的私有属性

//检测某一个属性是否是这个对象的“公有属性”

function hasPubProperty(obj,attr){
    return (attr in obj) && !obj.hasOwnProperty(attr);
//属性是对象的属性,但又不是私有的属性,必定是公有属性;
}




















以上是关于JS学习笔记-构造函数篇的主要内容,如果未能解决你的问题,请参考以下文章

JS原型学习笔记

js-ES6学习笔记-Class

#yyds干货盘点# js学习笔记三十二前端原型和原型链构造函数的使用

Vue.js 第2篇学习笔记

js-JavaScript高级程序设计学习笔记19

#yyds干货盘点# js学习笔记三十一前端原型和原型链构造函数的使用