-2

我怎样才能访问祖父母“这个”?

function F(){}
F.prototype.foo = 5;
F.prototype.getFoo = function(){ return this.foo; };
F.prototype.container.getFoo = function(){
   /* What goes here to return 5? */
};
4

1 回答 1

0
function F = function(){}
F.prototype.foo = 5;
F.prototype.getFoo = function(){ return this.foo; };
F.prototype.container = {
  getFoo: function(){
   /* What goes here to return 5? */
  }
};

var f = new F;
f.getFoo(); // 5, as it should be.
f.container.getFoo(); // how do i make this 5?

在上面的代码中,f.container与 的原型没有可访问的关系f——它不是由它构造的,它只是一个挂在F.prototype

你唯一能做的就是传入一个新的范围,或者改变它执行的范围,如下所示:

F.prototype.container = {
  getFoo: function(newscope){
   return newscope.foo;
  }
};
//instantiate f as an instance of F...
f.container.getFoo(f);

或者

F.prototype.container = {
  getFoo: function(){
   return this.foo;
  }
};
//instantiate f as an instance of F...
f.container.getFoo.apply(f);

我主张你不要使用这些解决方案,而是在谷歌周围搜索一些关于 JavaScript 中的命名空间和原型继承的信息。

于 2013-11-15T00:48:05.530 回答