Javascript JS对象文本中的方法和子方法
如果我用Javascript声明一个对象,如下所示:Javascript JS对象文本中的方法和子方法,javascript,oop,object,object-literal,Javascript,Oop,Object,Object Literal,如果我用Javascript声明一个对象,如下所示: var myhouse = { room: { bed: function() { return "sleep"; } } } 我可以打电话: myhouse.room.bed(); 我是否可以创建一个只需执行以下操作即可调用的方法: myhouse.room(); ??我不能只是说: var myhouse = { room: { function() { return "stu
var myhouse = {
room: {
bed: function() { return "sleep"; }
}
}
我可以打电话:
myhouse.room.bed();
我是否可以创建一个只需执行以下操作即可调用的方法:
myhouse.room();
??我不能只是说:
var myhouse = {
room: {
function() { return "stuff"; },
bed: function() { return "sleep"; }
}
}
这是无效的。那么我错过了什么?这样做是个好主意吗?如果您知道函数也是对象,那么可以使用这种语法
var room = function() { return "stuff"; }
room.bed = function() { return "sleep"; };
var myhouse = { room: room };
myhouse.room(); // stuff
myhouse.room.bed(); // sleep
或
如果知道函数也是对象,则可以使用这种语法
var room = function() { return "stuff"; }
room.bed = function() { return "sleep"; };
var myhouse = { room: room };
myhouse.room(); // stuff
myhouse.room.bed(); // sleep
或
您不能使用单个文本来完成此操作,您需要一个额外的赋值来设置函数的属性:
var myhouse = {
room: function() { return "stuff"; }
};
myhouse.room.bed = function() { return "sleep"; };
要使其成为单个表达式,可以使用IEFE
var myhouse = {
room: (function(){
var room = room = function() { return "stuff"; }
room.bed = function() { return "sleep"; };
return room;
})()
};
或逗号运算符(非常不可读,但可以工作):
您不能使用单个文本来完成此操作,您需要一个额外的赋值来设置函数的属性:
var myhouse = {
room: function() { return "stuff"; }
};
myhouse.room.bed = function() { return "sleep"; };
要使其成为单个表达式,可以使用IEFE
var myhouse = {
room: (function(){
var room = room = function() { return "stuff"; }
room.bed = function() { return "sleep"; };
return room;
})()
};
或逗号运算符(非常不可读,但可以工作):
我不认为你可以只用对象文字来做这件事,但是你可以“手动”做。我不认为你可以只用对象文字来做这件事,但是你可以“手动”做。谢谢!第一个是为我做的,但其他人很高兴知道,即使他们确实扭曲了我的头一点!:-)谢谢第一个是为我做的,但其他人很高兴知道,即使他们确实扭曲了我的头一点!:-)