最后的解决方案!
哎呀,我知道这听起来很混乱,希望在你能理解的例子之后。 假设我有一个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");
}
希望如果有人有同样的疯狂问题会有所帮助:)感谢所有回答和阅读的人!