如何从对象本身的对象属性创建对象?

时间:2014-09-15 23:24:11

标签: javascript function object properties return

最后的解决方案!

哎呀,我知道这听起来很混乱,希望在你能理解的例子之后。 假设我有一个person对象(我​​想使用object而不是函数对象,因为它类似于静态类)。

Persons = {

}

现在,在这个人物对象中,我有一个简单的人物对象。

Persons = {
    person:function(name){
       var $ = this;
       $.name = name;
    }
}

现在,假设我想拥有一个john属性,它是Persons.person对象的一个​​实例,我该怎么做?这些都不起作用:

Persons = {
    person:function(name){
       var $ = this;
       $.name = name;
    },
    john:new this.person("John"),
    john:function(){return new this.person("John")},
    john:return new this.person("John")
}

谢谢你,希望你得到我想要做的事情,如果没有,请问! :)


编辑:这是另一个例子(因为它被标记为重复,但重复说明属性,我正在讨论方法)。

看,这有效:

Keys = {
    key:function(keyCode){
        var $ = this;
        $.keyCode = keyCode;
    },
    ctrl:new Keys.key(8)
}

但它只能起作用,因为Keys是一个全局变量,如果Keys超出范围(可能是代码中的内部对象),它就不起作用(我认为)。 这不起作用。

var Keys = {
    key:function(keyCode){
        var $ = this;
        $.keyCode = keyCode;
    },
    ctrl:new Keys.key(8)
}

EDIT2:

找到一个解决方案,而不是直接使用对象来模拟静态类,我使用带有new关键字的function(){}版本,以便它创建一个对象,它模拟静态类,但您可以使用函数(){}表示法。

为清楚起见,上面的例子是:

var Keys = new function(){
        var $ = this;
        $.key = function(keyCode){
            var $ = this;
            $.keyCode = keyCode;
        },
        $.control = new $.key(8);
    }

var Persons = new function(){
    var $ = this;
    $.person = function(name){
       var $ = this;
       $.name = name;
    },
    $.john = new $.person("John");
}

希望如果有人有同样的疯狂问题会有所帮助:)感谢所有回答和阅读的人!

0 个答案:

没有答案