多的就不扯了,先来个例子,看看new Object()和{}
let objB = {};
// let objB = new Object();
objB.name = 'b';
objB.sayName = function () {
console.log(`My name is ${this.name} !`);
}
console.log(objB)
console.log(objB.__proto__ === Object.prototype); // true
objB.sayName();
得到
当new Object()没有传入值时,和{}是一样的;
那么new操作究竟干了些什么呢
var obj = new Object(); // 创建一个空对象
obj.__proto__ = F.prototype; // obj的__proto__指向构造函数的prototype
var result = F.call(obj); // 把构造函数的this指向obj,并执行构造函数把结果赋值给result
if (typeof(result) === 'object') {
objB = result; // 构造函数F的执行结果是引用类型,就把这个引用类型的对象返回给objB
} else {
objB = obj; // 构造函数F的执行结果是值类型,就返回obj这个空对象给objB
}
再