使用寄生构造函数 创建类

类似于工厂模式创建类,不同的地方在于 调用时采用了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('lee');
console.log('o instanceof ClassA:',o instanceof ClassA);  //false
o.printName();
原文地址:https://www.cnblogs.com/lydialee/p/4780105.html