将父级范围传递给子实例

时间:2016-09-07 17:20:22

标签: javascript oop scope

我已经构建了一个演示播放器,可以将其幻灯片创建为iframe,并且我正在尝试清理我的代码,因为我有原型工作。不过,我在找到处理幻灯片和演示文稿播放器之间交互的最佳方法时遇到了问题。幻灯片需要做一些事情,比如告诉玩家他们已经加载或者他们已经完成了比赛。

我做了一个简化的例子,说明了玩家和幻灯片实例需要的交互......

  function Parent() {
    this.child = undefined;
    this.makeChild = function() {
      this.child = new Child(this);
    };
    this.payAttention = function(message) {
      console.log('Child says, "' + message + '"');
    };
  }

  function Child(parent) {
    this.getAttention = function() {
      parent.payAttention('I\'m hungry.');
    };
  }

  var dad = new Parent();
  dad.makeChild();
  dad.child.getAttention();

这种模式有效,但我想知道这是否是处理此问题的最有效方法。有没有更好的方法来做到这一点,或者这没关系?

1 个答案:

答案 0 :(得分:0)

您可以通过在变量中插入对象来保存几行:

this.child={};
this.makeChild=function(){
a=function(){
this.payAtention("Im Hungry");
}
a.bind(this);
this.child.getAttention=a;
}

如果您从未处理 .bind(范围): 绑定将作为参数传递的对象绑定到函数内的this。

顺便说一句,如果有多个孩子:

this.child=[];
this.child.push({name:"Tim"});