Javascript 向对象文本中定义的对象构造函数添加原型
嘿,我在里面有一个对象构造函数方法和对象文本,我为构造函数定义了一个原型,如下所示Javascript 向对象文本中定义的对象构造函数添加原型,javascript,Javascript,嘿,我在里面有一个对象构造函数方法和对象文本,我为构造函数定义了一个原型,如下所示 objectLiteralKey:(function() { var f=function() { ... }; f.prototype=ObjectInstance; return f; }()), //inside an object literal 是否有任何理由应该避免这种定义原型的模式?或者另一种更好的方式 编辑:顺便说一下,对象文字位于保存
objectLiteralKey:(function()
{
var f=function()
{
...
};
f.prototype=ObjectInstance;
return f;
}()),
//inside an object literal
是否有任何理由应该避免这种定义原型的模式?或者另一种更好的方式
编辑:顺便说一下,对象文字位于保存laserPrototype的自调用函数中,我将其放在那里,因为还有另一个“敌人”需要相同的原型
完整代码
是否有任何理由应该避免这种定义原型的模式
不,也许除了可读性
或者另一种更好的方式
我认为代码中有太多不必要的直接调用的函数表达式,您可以忽略它们。最好将构造函数放在原型之前:
var laser = (function () {
var eLasers = []; // local variable declarations
var pLasers = []; // for encapsulation
function Player() {
this.x = window.player.x; // wait, what? Maybe parameters
this.y = window.player.y; // would fit better.
pLasers.push(this);
this.destroy = function () {
pLasers.splice(pLasers.indexOf(this), 1);
}
}
function Enemy() {
…
}
// here, Player.prototyp !== Enemy.prototype
// but I don't think that is really necessary
Player.prototype.draw = Enemy.prototype.draw = function() {
ctx.beginPath();
ctx.arc(this.x, this.y, 5, 0, 2 * Math.PI);
ctx.stroke();
};
return {
enemy: Enemy,
player: Player,
step: …
}
}())
什么是eLasers?敌方是其一部分的对象文字是什么,它是单例的吗看到你的编辑,如果你能把这个自调用函数放在那里就好了(并用ellipis替换掉不必要的部分…)kk,我删掉了不重要的部分