Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.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 在声明中设置两个相等的属性_Javascript_Jquery_Object - Fatal编程技术网

Javascript 在声明中设置两个相等的属性

Javascript 在声明中设置两个相等的属性,javascript,jquery,object,Javascript,Jquery,Object,我想在一个对象中设置两个彼此相等的属性。下面是一个例子: var obj = { // I want to do something like this a: function() { ... }, b: alert, c: a }; 显然这不起作用,我必须这样做: var obj = { a: function() { ... }, b: alert, }; obj.c = obj.a; 在声明中有什么方法可以做到这一点吗?您可以先声明函数,然后将其

我想在一个对象中设置两个彼此相等的属性。下面是一个例子:

var obj = { // I want to do something like this
    a: function() { ... },
    b: alert,
    c: a
};
显然这不起作用,我必须这样做:

var obj = {
    a: function() { ... },
    b: alert,
};
obj.c = obj.a;

在声明中有什么方法可以做到这一点吗?

您可以先声明函数,然后将其与
a
&
c
一起使用:

function f() { ... }

var obj = {
    a: f,
    b: alert,
    c: f
};

您可以将该值放入单独的变量中:

var temp = function() { ... };
var obj = { // I want to do something like this
    a: temp,
    b: alert,
    c: temp
};

但是,您无法做得更好。

如果您想在对象初始值设定项内完成所有操作,则可以让一个属性从另一个属性调用函数,并使用function.arguments属性中继任何参数:

var obj = { 
    a: function() { ... },
    b: alert,
    c: function() { return this.a(arguments); }
};
但是,最好先创建一个包含匿名函数的变量,然后将其值分配给对象初始值设定项中的两个属性:

var fn = function() { ... };
var obj = {
    a: fn,
    b: alert,
    c: fn
};
您也可以这样做,但我会采用上面的方法:

var obj = { b: alert };
obj.a = obj.c = function() { ... };

正如SLaks所提到的,如果函数具有属性(例如prototype或arguments.callee),这将不起作用。

请参阅,如果函数具有属性(例如,
prototype
arguments.callee
),这将不起作用。
var obj = { 
    a: function() { alert("hello")},
    b: alert,
    c: function(){return this.a()}
};

obj.c();