由于变量范围,requireJS丢失了原型

requirejs lost prototype due to variable scoping?

本文关键字:requireJS 原型 范围 于变量 变量      更新时间:2023-09-26

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

由于属性和巴哈维在增长可用类型的 nubzer 时逐渐出现在系统上:我正在制作一些中间模块

  • 基本的:营地,代数参考,风玫瑰

  • 中级:棋盘、棋盘、棋牌

  • 全球的:游戏

我正在使用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
});

那么,这是怎么回事呢?董事会的原型去哪儿了?这是一个模块之间范围界定的故事吗?

问候。

这与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

在这里,您将看到对内部原型的引用