使用单个javascript原型的多个文件使用对象文字

时间:2014-02-19 15:02:15

标签: javascript

基本上,我找到了API使用某些对象文字的javascript库。我试图弄清楚如何在不同的JavaScript文件上分离它们以便于阅读。有一个文件有30个不同的功能嵌套在一个对象...我试图将它们分开。以下示例已经过简化,以表明我的观点。

BasicGame.Game.prototype = {

var1: function () { blah blah},
var2: function () { blah blah},
var3: function () { blah blah},
var4: function () { blah blah}
}

如何取出var3和var4并将它们放入另一个共享相同Basic.Game对象的对象文字中?如果我再次编写BasicGame.Game,它将覆盖原始对象文字。

2 个答案:

答案 0 :(得分:2)

您可以在另一个文件中编写BasicGame.Game.prototype.var3 = function() { },但不会覆盖其中已有的功能。

例如,file1.js

BasicGame.Game.prototype = {
    var1: function () { blah blah},
    var2: function () { blah blah}
}

file2.js

BasicGame.Game.prototype.var3 = function () { blah blah};
BasicGame.Game.prototype.var4 = function () { blah blah};

只需确保首先包含file1.js或对两个文件使用点符号。

答案 1 :(得分:1)

您可以使用以下代码扩充Object:

Object.defineProperty(Object.prototype, "partial", {
    enumerable: false,
    configurable: false,
    set: function (value) {
        if (value.constructor === Object) {
            for (prop in value) {
                if (value.hasOwnProperty(prop)) {
                    this[prop] = value[prop];
                }
            }
        }
        return this;
    },
    get: function () { return this;}
});

然后你可以使用这个扩充来为任何对象添加文字:

//first file
BasicGame.Game.prototype = {

    var1: function () { alert("blah blah"); },
    var2: function () { alert("blah blah"); },
}

//second file
BasicGame.Game.prototype.partial = {

    var3: function () { alert("blah blah"); },
    var4: function () { alert("blah blah"); }
}

var game = new BasicGame.Game();

现在 游戏 会显示所有四个属性,因为它们“闪耀”其构造函数的原型。