看到很多手写Object.create()是这样写的:
function myCreate(obj) {
function F() {}
F.prototype = obj
return new F()
}
不是很理解为什么要新建一个构造函数再用new调用这个构造函数,为什么不能像下面这样写:
function myCreate(obj) {
var o = {}
o.__proto__ = obj
return o
}
看到很多手写Object.create()是这样写的:
function myCreate(obj) {
function F() {}
F.prototype = obj
return new F()
}
不是很理解为什么要新建一个构造函数再用new调用这个构造函数,为什么不能像下面这样写:
function myCreate(obj) {
var o = {}
o.__proto__ = obj
return o
}
13 回答12.8k 阅读
7 回答1.9k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答875 阅读✓ 已解决
6 回答1k 阅读
2 回答1.3k 阅读✓ 已解决
prototype 不是原型对象。
第一种写法才可以正确设置原型对象。
a=new F()
a 的原型对象是 F.prototype