我们可以从jsonObject创建实例吗?

时间:2014-05-12 12:07:10

标签: javascript oop object

我需要你的帮助,我的问题是我们可以从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.

我知道我的代码中的最后一行会导致错误,但我们可以做类似的事情。

4 个答案:

答案 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();