2013-10-22 55 views
0

我想,因爲性能和bahaviour日益增長的可用類型的nubzer時逐漸在系統上顯示,開發(重寫)小棋引擎(2名玩家對平板電腦或遠程遊戲)requirejs由於變量範圍而丟失了原型?

:IM製作

  • 基本者之間的一些中間模塊:營地,代數引用,WINDROSE

  • 中間體:棋子,板,磚瓦

  • 分全球的:遊戲

我「用require.js來定義我的模塊M,我有很多的對象交叉引用,所以我M樓池(事務管理器),以保持整個依賴關係圖形。

就會出現問題時,試圖得到一個對象的原型它被定義的模塊之外,像這樣:

// file: js/app/chess/board.js 
define("chess/algebr", function(algebr) { 
    var Board = function(id) { 
     this.id = id; 
    } 

    // other stuff ... 

    return { 
     create : function() { return new Board(); } 
    } 
}); 

// file js/app/colorchess.js 
define("core/pool", "chess/board", "chess/tile", function(pool, board, tile) { 
    // some other stuff... 

    var board = board.create(); 

    console.log(board.prototype); // --> undefined 

}); 

那麼,什麼是錯的? 董事會的原型去了哪裏? 這是模塊之間的範圍界定嗎?

問候。

+0

'var board = board.create();'你爲什麼要重新登錄? – epascarello

+0

var board:變量本身,board.create模塊,因爲它是(集合)類型定義,所以稱爲「板」更好! (錯誤#2) –

回答

0

這與require.js無關。

prototype只是你mistakingly試圖訪問,與原型混淆它二傳手屬性:

console.log((new Board()).__proto__); // works in fresh browsers like Chrome 30, IE11 
在此

var Board = function(id) { 
    this.id = id; 
}; 

Board.prototype.test = function() {return 42;} 

console.log((new Board()).prototype); 

http://jsfiddle.net/Gtb2L/

與比較你參見內部參考原型

+1

有效我誤會了......通過做obj.constructor.prototype.propXYZ我可以訪問內部原型(因爲__proto__不是真的跨瀏覽器)!感謝幫助。 –