1. 程式人生 > >new的模擬實現

new的模擬實現

function Person(name,age){
    this.name=name;
    this.age=age;
}
var p=new Person('cj',22);

從上面的程式碼簡單分析一下:

1.我們的函式要使用Person這個建構函式,需要把其當成引數傳進去

2.通過我們自定義方式創建出來的物件的__proto__要指向建構函式的prototype物件

3.函式不能固定傳參,所以得通過arguments

function Person(name,age){
    this.name=name;
    this.age=age;
}

function New(f){   //f是個函式,就是構造器函式
    return function(){
        var o={"__proto__":f.prototype};
        f.apply(o,arguments);
        return o;
    }
}
var p1=New(Person)('xx',77);
console.log(p1.name);
console.log(p1.age);
console.log(p1 instanceof Person);