我需要你的帮助,我的问题是我们可以从JsonObject创建一个实例。
例如,流动的代码是由错误导致的
var player_hand =
{
x: null,
y: null,
height: null,
width: null,
style: null,
set: function(x, y, width, height, style)
{
this.x= x;
this.y= y;
this.width = width;
this.height= height;
this.style= style;
},
draw: function()
{
DrawRect.draw(this.x, this.y, this.width, this.height , this.style);
}
};
var DrawRect =
{
draw: function(x, y, width, height, style)
{
gameContext.fillStyle = style;
gameContext.fillRect(x, y, width, height);
}
};
var left_hand = new player_hand(); // error.
我知道我的代码中的最后一行会导致错误,但我们可以做类似的事情。
答案 0 :(得分:4)
player_hand
已经是Javascript对象,而不是构造函数。
你需要做这样的事情。
function player_hand(...)
{
this.x = null;
// ...
}
然后
var left_hand = new player_hand();
应该可以正常工作。
答案 1 :(得分:1)
试试这个:
var player_hand = function(){
return {
x: null,
y: null,
height: null,
width: null,
style: null,
set: function(x, y, width, height, style)
{
this.x= x;
this.y= y;
this.width = width;
this.height= height;
this.style= style;
},
draw: function()
{
DrawRect.draw(this.x, this.y, this.width, this.height , this.style);
}
}
};
然后您可以使用var left_hand = player_hand();
。
答案 2 :(得分:1)
严格地说,如果您乐意告诉Internet Explorer 8及以下版本的用户...您实际上可以使用player_hand
“定义”作为Object.create
方法中的原型
简化示例:
var foo = {
val: null,
getVal: function(){
return this.val;
}
},
bar = Object.create(foo, {
val: { value: 'foo' }
});
console.log( bar.getVal() ); // 'foo'
答案 3 :(得分:0)
在javascript中,当你用新的Something()创建一个对象时,Something指的是一个函数。
如果要创建从对象player_hand继承的实例,则需要声明一个函数,比如说Player_hand()(约定是用大写字母开始构造函数名称),并将其原型设置为player_hand:
function Player_hand() {}
Player_hand.prototype = player_hand;
您现在可以写:
var left_hand = new Player_hand();