理解 js new 操作符做了什么
做了什么 创建一个空对象 对象的__proto__指向构造函数的 prototype 改变构造函数的 this 指向,指向 obj 返回这个对象 new 的实现
function A() {}
var a = new A();
做了什么
- 创建一个空对象
- 对象的__proto__指向构造函数的 prototype
- 改变构造函数的 this 指向,指向 obj
- 返回这个对象
new 的实现
function myNew(A) {
// 创建一个空对象
var obj = Object.create(null);
// 空对象的__proto__指向构造函数的prototype
obj.__proto__ = A.prototype;
// 改变构造函数的this指向,指向obj
var ret = A.call(obj);
// 返回这个对象
return obj;
}
function A() {}
var a = myNew(A);
var _a = new A();
console.log(a);
console.log(_a);
即可发布评论!
暂无评论
确认评论邮箱
邀请制评论