阅读 36

new和Object.create区别

new和Object.create区别

1.new的内部实现

Snipaste_2021-03-21_10-52-32.png

2.Object.create的内部实现

图片.png

很容易看出来下面的内容:

3.png

o1由于是Foo的实例,实现了Foo的构造函数,所以拥有内部属性,而o2没有实现Foo的构造函数,所以没有内部属性a,这一点没什么问题。

问题在于o2的原型是谁?是否能获取Foo原型上的属性呢?

4.png

结果可以看到,Foo的原型上加了一个b属性,此时o2还是无法获取到这个属性,那么o2的原型链到底长什么样子?

5.png

可以看到o2的原型先指向Foo构造函数,然后指向Function的原型,o2的原型链上就没有Foo.prototype,所以无法获取到Foo原型上的属性。

文章分类
前端
文章标签