面试题答案
一键面试- 调用
myDog.eat()
时的查找过程:- 首先,JavaScript 引擎在
myDog
的自身属性中查找eat
方法。由于myDog
本身没有定义eat
方法,所以查找失败。 - 然后,JavaScript 引擎沿着
myDog
的__proto__
(即Dog.prototype
)查找。Dog.prototype
也没有定义eat
方法,查找继续。 - 接着,JavaScript 引擎沿着
Dog.prototype
的__proto__
(也就是Animal.prototype
)查找。在这里找到了eat
方法,于是执行该方法,输出eating
。 - 涉及的
prototype
链环节为:myDog.__proto__
(Dog.prototype
) ->Dog.prototype.__proto__
(Animal.prototype
)。
- 首先,JavaScript 引擎在
- 调用
myDog.bark()
时的查找过程:- 同样,JavaScript 引擎先在
myDog
的自身属性中查找bark
方法。因为myDog
本身没有定义bark
方法,查找失败。 - 接着沿着
myDog
的__proto__
(即Dog.prototype
)查找。在Dog.prototype
中找到了bark
方法,于是执行该方法,输出barking
。 - 涉及的
prototype
链环节为:myDog.__proto__
(Dog.prototype
)。
- 同样,JavaScript 引擎先在