如何在JS中访问祖父母?

时间:2013-11-15 00:22:31

标签: javascript prototype

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

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

1 个答案:

答案 0 :(得分: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.containerf的原型没有可访问的关系 - 它不是由它构造的,它只是一个悬挂在F.prototype上的命名空间

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

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

OR

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

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