Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS对象文本中的方法和子方法_Javascript_Oop_Object_Object Literal - Fatal编程技术网

Javascript JS对象文本中的方法和子方法

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

如果我用Javascript声明一个对象,如下所示:

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;
    })()
};
或逗号运算符(非常不可读,但可以工作):


我不认为你可以只用对象文字来做这件事,但是你可以“手动”做。我不认为你可以只用对象文字来做这件事,但是你可以“手动”做。谢谢!第一个是为我做的,但其他人很高兴知道,即使他们确实扭曲了我的头一点!:-)谢谢第一个是为我做的,但其他人很高兴知道,即使他们确实扭曲了我的头一点!:-)