Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/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
Javascript对象文字符号,使用函数_Javascript - Fatal编程技术网

Javascript对象文字符号,使用函数

Javascript对象文字符号,使用函数,javascript,Javascript,我正在使用文字符号创建一个对象。是否可以让某些属性使用以前定义的属性作为其值 例如: var test = { prop1: obj1, prop2: obj2, prop3: (prop1!=null)?prop1:prop2 }; var test = { prop1: obj1, prop2: obj2, prop3: (function () { return (test.prop1!=null)?t

我正在使用文字符号创建一个对象。是否可以让某些属性使用以前定义的属性作为其值

例如:

    var test = {
        prop1: obj1, 
        prop2: obj2,
        prop3: (prop1!=null)?prop1:prop2
    };
var test = {
  prop1: obj1,
  prop2: obj2,
  prop3: (function () {
    return (test.prop1!=null)?test.prop1:test.prop2;
  })()
};

如果您试图执行类似于
var x={'a':1,'b':x.a}
的操作,那么它将不起作用。因为
x
尚未完成定义

但你可以做类似的事情

var
    a = 12,
    b = 24,
    c = a + b; // 36
这是因为每个var定义都是按顺序解释的。基本相当于

var a = 12;
var b = 24;
var c = a + b;
但是对于对象和数组,整个定义只解释一次。

否和是

以下是不可能的:

var o = {
    a : 42,
    b : o.a //raises a TypeError, o is not defined
};

var o = {
    a : b : 42 //raises a SyntaxError, unexpected :
};
然而,以下是:

//referencing a pre-existing variable is obviously possible
var ans = 42;
var o = {
    a : ans,
    b : ans
};

var o = {
    a : 42
};
//after the variable has been declared, you can access it as usual
o.b = o.a;
如果您觉得该值受单个语句的限制,则始终可以使用匿名函数:

var o = {
    a : (function () {
        doStuff();
        return otherStuff();
    }())
};
为了保持你的榜样:

    var test = {
        prop1: obj1, 
        prop2: obj2,
        prop3: (prop1!=null)?prop1:prop2
    };
var test = {
  prop1: obj1,
  prop2: obj2,
  prop3: (function () {
    return (test.prop1!=null)?test.prop1:test.prop2;
  })()
};

你能说得更具体些吗?从你的例子中,我真的看不出问题的本质是什么,因为你应该能够相当容易地测试出来。你有没有更详细的例子要展示?是的,这就是我想要的。