[当我使用JavaScript原型继承对象并想通过以下方式使用它的方法时:
var Father = {
name:'Father',
act:function(){
console.log('the name is '+this.name);
}
}
var Son = function(){
act();
}
Son.__proto__ = Father;
Son();
这不起作用,当Js Engine运行Son()
时,它应该在其原型链中搜索act()
。
但是为什么它只能通过以下方式工作:
var Father = {
name:'Father',
act:function(){
console.log('the name is '+this.name);
}
}
var Son = {
name:'Son'
}
Son.__proto__=Father;
Son.act();
act不是对象的任何属性。它只是指向函数的变量。]>
[当您尝试访问对象的属性时,只有Javascript首先检查该对象中是否存在该属性,如果不存在,则仅在其原型中搜索,直到原型为空为止。
您需要做两件事:
它的长短是当您尝试使用它时,act()
函数不存在。