2016-09-07 29 views
0

我已經構建了一個演示文稿播放器,它將幻燈片創建爲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(); 

這種模式的工作,但我不知道這是否是處理這個最有效的方法。有沒有更好的方法來做到這一點,或者這是好嗎?

+0

這是完全合理的一個孩子有他們的實例數據的一部分,他們的父母參考。你正在做的事情很好,沒有特別的更好的方法來做到這一點。 – jfriend00

+0

你可以把孩子變成一個匿名功能,這樣可以節省幾行... –

+0

似乎很好。另一種方法是將回調傳遞給孩子,而不是使用'payAttention'方法傳遞對象。或者爲了減少耦合,使用中介。 – Bergi

回答

0

你可以節省幾行插入對象的變量:

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

如果你從來沒有處理.bind(範圍): 綁定綁定作爲參數傳遞給這個傳遞的對象在函數內部。

順便說一句,如果有多個孩子的:

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