为什么我不能在方法中引用从JavaScript原型继承的方法

问题描述 投票:0回答:3

[当我使用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();
javascript prototype
3个回答
0
投票

act不是对象的任何属性。它只是指向函数的变量。]​​>

[当您尝试访问对象的属性时,只有Javascript首先检查该对象中是否存在该属性,如果不存在,则仅在其原型中搜索,直到原型为空为止。


0
投票

您需要做两件事:


0
投票

它的长短是当您尝试使用它时,act()函数不存在。

© www.soinside.com 2019 - 2024. All rights reserved.