返回的是一个引用数据类型的值,当前的实例会被自己的返回值给替换掉,例如返回: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);
//属性是对象的属性,但又不是私有的属性,必定是公有属性;
}