0

我正在尝试开发(重写)作为小型国际象棋引擎(平板电脑上的 2 名玩家,或远程游戏)

因为当增加可用类型的nubzer时,属性和行为逐渐出现在系统上:我在两者之间制作了一些中间模块

  • 基本的:营地,代数参考,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

});

那么,怎么了?板子的原型去哪了?这是一个关于模块之间作用域的故事吗?

问候。

4

1 回答 1

0

这与 require.js 无关。

prototype只是您错误地尝试访问的属性,将其与原型设置器混淆:

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

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

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

http://jsfiddle.net/Gtb2L/

与之比较:

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

在此您看到对内部原型的引用

于 2013-10-22T19:01:59.783 回答