我是原型结构的新手,我很难搞清楚这个。这是我的JavaScript代码。
var Game = function ()
{
//some variables
};
Game.prototype.block =
{
spawn: function () {
var t1 = new this.inst;
},
inst : {
x: 5,
y: 0,
type: ''
}
};
当我尝试创建一个新对象“inst”时,我收到以下错误: TypeError:object不是函数。我做错了什么?
答案 0 :(得分:1)
如果要创建从inst
对象继承的对象,可以使用Object.create
和var t1 = Object.create(this.inst);
来执行此操作。
var Game = function () {
//some variables
};
Game.prototype.block = {
spawn: function () {
var t1 = Object.create(this.inst);
},
inst : {
x: 5,
y: 0,
type: ''
}
};
那么你的代码看起来就像这样;
var game = new Game();
game.block.spawn();
.spawn()
方法将有一个引用从Game.prototype.block.inst
对象继承的对象的变量。
答案 1 :(得分:0)
首先,inst
未在Game
的范围内定义。因此,引用this
的{{1}}没有任何名为Game
的属性。其次,inst
后面必须跟inst
表示对构造函数的调用,这是您在此处缺少的。
答案 2 :(得分:0)
我邀请您使用静态工厂方法来创建新的“inst”。以下是您需要的代码吗?你调用Game.spawn方法生成一个新的inst,你可以把这个方法放在setInterval中。
function Game() {
//some variables
}
Game.spawn = function() {
function Inst() {
this.x = 5;
this.y = 0;
this.type = '';
}
return new Inst;
}
var inst1 = Game.spawn();
inst1.x = 1; //test inst1
console.log(inst1.x);
var inst2 = Game.spawn();
inst2.x = 2; //test inst2
console.log(inst2.x);
var inst3 = Game.spawn();
inst3.x = 3; //test inst 3
console.log(inst3.x);