JS中的new操作符原理解析

1 var Person = function(name){
2    this.name  = name;
3 }
4 Person.prototype.sayHello = function() {
5     console.log('hello ' + this.name);
6 }
7 var p1 = new Person('HANMEI');
8 p1.sayHello();

1. 创建一个类的实例:创建一个空对象obj,然后把这个空对象的__proto__设置为Person.prototype(即构造函数的prototype);

2. 初始化实例:构造函数Person被传入参数并调用,关键字this被设定指向该实例obj;

3. 返回实例obj。

new 实现

1 function New(F){
2     var obj = {'__proto__': F.prototype};  /*第一步*/
3     return function() {
4         F.apply(obj, arguments);           /*第二步*/
5         return obj;                        /*第三步*/
6     }
7 }

-------------------------------

原文:https://www.cnblogs.com/lvmylife/p/8184176.html

猜你喜欢

转载自www.cnblogs.com/zlv2snote/p/10428465.html