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);

猜你喜欢

转载自blog.csdn.net/liuhua_2323/article/details/83545685