new操作符具體幹了啥
我們平常見到就是 這樣new的一個例項
function Base(name) {
this.name = name;
}
Base.prototype.showName = function() {
console.log(this.name);
};
var obj = new Base()複製程式碼
到底這個new的過程幹了啥就不買關子了 其實new的過程就幹了三件事
1.var obj = {};
- 第一步var obj = {}是建立一個空的物件 obj
2.obj.proto = Base.prototype;
- 第二步 物件中有的是_proto 函式有的是 prototype 第二步這個時候講空物件obj的原型proto 指向Base函式的prototype的
3.Base.call(obj);
- 第三步 這個時候利用call 將Base函式物件的this指標指向obj 這樣在原型中新增的 通過new 就可以了
所以上述 建立物件說了兩種方法
- var obj = new Base()
就是通過new的過程來實現建立一個物件
在整理回顧下
- var obj = new Base()
- var obj ={}
obj.proto = Base.prototype
Base.call(obj)
兩種方式建立一個物件