看到很多手写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
}1 回答862 阅读✓ 已解决
1 回答1.1k 阅读
2 回答780 阅读
2 回答622 阅读
2 回答610 阅读
1 回答683 阅读
2 回答531 阅读
prototype 不是原型对象。
第一种写法才可以正确设置原型对象。
a=new F()
a 的原型对象是 F.prototype