摘要:类似于工厂模式创建类,不同的地方在于 调用时采用了new 构造函数的模式。new的作用:改变this指向,普通的函数调用,this指向window或者调用了该函数的对象; 其次,通过new后,函数返回一个this对象,即实例对象寄生构造函数:没有使用默认的this返回值,而是重新return了一个对象, 该对象与this指向的对象不同,完全独立的。function Class
类似于工厂模式创建类,不同的地方在于 调用时采用了new 构造函数的模式。
new的作用:改变this指向,普通的函数调用,this指向window或者调用了该函数的对象; 其次,通过new后,函数返回一个this对象,即实例对象
寄生构造函数:没有使用默认的this返回值,而是重新return了一个对象, 该对象与this指向的对象不同,完全独立的。
function ClassA(name){
var obj = new Object();
obj.name = name;
obj.printName = function (){
console.log(obj.name);
console.log(this.name);
}
console.log(this,this==obj); //this指向ClassA
return obj; //覆盖返回的this ,此处如果不使用return 会默认返回ClassA的实例 this
}
var o = new ClassA('licui');
console.log('o instanceof ClassA:',o instanceof ClassA); //false
o.printName();