gpt4 book ai didi

javascript - 在javascript中,构造对象时,无法使用其他对象的方法

转载 作者:行者123 更新时间:2023-11-28 21:18:30 24 4
gpt4 key购买 nike

当使用其他对象的方法作为属性名称构造对象时,获取语法错误:意外的标记。 - 找不到正确的语法

var R = function(a) { this.arg = a; };R.prototype.name = function() { return this.arg; }var r1 = new R('abc');var name1 = r1.name();        // => "abc"var o1 = { 'abc': r1 }        // this works with constantvar o2 = { name1: r1 }        // does not work with variable (see answer)var o3 = { r1.name(): r1 }    // this fails - syntaxvar o4 = { 'abc': r1.name() } // this works

尝试过{ (r1.name()): r1 },但也失败了。

<小时/>

请注意,字符串整数被计算为裸字,而方法和变量则不然:

var o5 = { e.1: 123 }          // failsvar o6 = { 'e.1': 123 }        // succeedsvar o7 = { 1: 123 }            // succeedsvar o8 = { '1': 123 }          // same as o7

最佳答案

var o2 = { name1: r1 }        // this works with variable

这与以下含义相同:

var o2 = { 'name1': r1 }

换句话说,它仍然将 name1 视为文字字符串。对象字面量中的键必须是常量或所谓的“裸字”——这是语言的限制。变量和函数调用不能用作对象文字中的键(但可以用作值)。使用变量似乎可以工作,但变量名称将用作键而不是变量的值。

您必须执行以下操作:

var o2 = {};
o2[name1] = r1;

var o3 = {};
o3[r1.name()] = r1;

关于javascript - 在javascript中,构造对象时,无法使用其他对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6982565/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com