我试图开发(重写)小型国际象棋引擎(平板电脑或远程游戏中的2名玩家)
因为当种植可用类型的nubzer时,属性和bahaviour会逐渐出现在系统上:我在制作一些中间模块之间
基本的:阵营,代数参考,windrose
中级:西洋棋棋子,棋盘,瓷砖
全球性的:游戏
我使用require.js来定义我的模块,我有很多对象交叉引用,所以我构建了一个池(事务管理器)来保持依赖关系图之间的关系。
当试图将一个对象的原型放在它定义的模块之外时,问题出现了,如下所示:
// 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 :(得分:0)
这与require.js无关。
prototype
只是您错误地尝试访问的属性,将其与 prototype setter混淆:
var Board = function(id) {
this.id = id;
};
Board.prototype.test = function () {return 42;}
console.log( (new Board()).prototype );
与:比较:
console.log( (new Board()).__proto__ ); // works in fresh browsers like Chrome 30, IE11
在此将看到对内部原型的引用