大厂常见面试:原型与原型链

上面的输出是什么?

回答:

原因:

1) ECMAScript指定了两个特殊的内置对象:对象和函数。它们的特殊性在于,它们本身是函数对象,同时也是构造函数。(函数对象对应的类型是Function,就像数组对象对应的类型是array一样;普通构造函数是new Fn()。)

2)原型链是对象的集合,每个对象都有一个指向另一个对象的内部属性[[Prototype]](_ _ proto _ _ pointer);当访问一个对象的属性时,如果这个属性不在对象自己的属性上,继续在[[Prototype]]所指向的对象上寻找这个属性。[[Prototype]]形成一个链式的对象集合,这是一个原型链。可以得出结论,原型链中的所有元素都是对象。

实例对象在自己找不到时,会寻找[[Prototype]]指向的对象。

3) ECMASciprt规定原型链中有两个元素是固定的,端点为null,倒数第二个元素是Object.prototype指向的对象。

我们最常用的是文字量{}和函数;;在上述主题中

1,function A() {}是原型链(box function)倒数第四个,所以它可以根据原型链搜索规则得到Function.prototype和Object.prototype。

2、var A = new A();实际上,a是一个对象。我们来看看这句话的原理:

用法:

你可以看到对New(A)('小米')的调用其实是一个obj,obj是一个对象。

所以这个时候原型链在倒数第三,只有Object.prototype在向上看。

3.Function.b和Object.a中的函数和对象在9个内置对象中,所以它可以找到Function.prototype和Object.prototype。

一张图解决了多年的问题吗?我曾经记了太多单词,很快就忘记了。经常看图片,很容易进入脑海。