首页 > Web开发 > 详细

js中的new操作符原理

时间:2019-10-06 20:37:10      阅读:92      评论:0      收藏:0      [点我收藏+]

举一个很常见的例子

function Person(name){
  this.name = name;
} Person.prototype.say
= function(){ console.log(this.name); } let p = new Person("花花"); p.say(); //花花

 

为什么会打印出“花花”?为什么构造函数中的 this 就指向了 对象?

这就是 new 的原理起的作用:

1、创建一个类的实例:创建一个空对象obj,然后把这个 obj 对象的 __proto__ 设置为Person.prototype;即创建一个继承自Person.prototype的新对象

2、执行构造函数:执行的时候,相应的参数会被传入,this 会被指定为第1步创建的新实例;

3、返回对象:如果构造函数返回了一个新对象,那么这个新对象会取代步骤1中new出来的实例被返回。如果构造函数没有返回对象,那么new出来的结果为步骤1创建的对象

New实现

function New(Person){
    var obj = {‘__proto__‘: Person.prototype};  //第一步
    return function() {
        Person.apply(obj, arguments); //第二步
        return obj; //第三步
    }
}

 

js中的new操作符原理

原文:https://www.cnblogs.com/baby-zuji/p/11628304.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!