一天一点新东西-js的new操作符
今天重拾js高级程序设计的对象章节,看到工厂模式和构造函数模式,其中唯一不同的就是new这个操作符,好奇new操作符到底干了什么,百度之,得到一个较好的解释,想写下来,加深理解。(后来发现下面有解释- -)
new操作符
var obj = new Base('base');
我们在Javascript引擎中看到的对象模型是:

new操作符具体干了什么呢?其实很简单,就干了三件事情:
var obj = {}; obj.__proto__ = Base.prototype; Base.call(obj);
第一行,我们创建了一个空对象obj
第二行,我们将这个空对象的__proto__成员指向了Base函数对象prototype成员对象
第三行,我们将Base函数对象的this指针替换成obj,然后再调用Base函数,于是我们就给obj对象赋值了一个id成员变量,这个成员变量的值是”base”。
当然在Base.prototype上添加一个函数,如,Base.prototype.toString = function() { console.log(id)},obj对象也是可以根据__proto__特性访问到Base的prototype原型方法的。
所以一般在prototype定义公用方法,在obj实例上定义成员变量。

浙公网安备 33010602011771号