JS 中 new 操作符做了什么事情

一、前言

在构造函数中,通常使用 new 操作符进行实例化,那么 new 操作符到底有什么作用,可以使用其他方案代替吗?

二、new 操作符做了什么事情

function Person(name){
    this.name = name ;
};
var jack = new Person('jack');
var jack1 = new Person('jack');
console.log(jack);//{name:jack};
console.log(jack1);//{name:jack};
console.log(jack == jack1);//false;

通常当创建完构造函数之后,可以直接通过 new 创建实例,并且每个实例都不一样。

接下来看另一个函数。

function Person(name,age){
   this.name = name ;
   this.age = age ;
}
function copyNew(sub,...arg){
    //1.创建新对象
    var obj = {};
    //2.将空对象作为 this 调用父函数
    sub.apply(obj,arg);
    //3.将改对象原型指向父函数,实现继承
    obj.__proto__ = sub.prototype;
    //4.返回该对象
    return obj;
};
var jack = copyNew(Person,'jack',12);
console.log(jack);//{name:jack,age:12};

以上函数基本上实现了 new 操作符的功效,主要分为以下四步。

1.新建一个空对象 obj ;

2.将 obj 作为 this 通过 apply 方法调用 sub 函数;

3.将 obj 的原型指向 sub 函数;

4.返回 obj 对象。

猜你喜欢

转载自blog.csdn.net/weixin_44135121/article/details/89742320