Tod*_*d R 257 javascript syntax jquery object
我使用jQuery从DOM中提取项目,并希望使用idDOM元素在对象上设置属性.
const obj = {}
jQuery(itemsFromDom).each(function() {
const element = jQuery(this)
const name = element.attr('id')
const value = element.attr('value')
// Here is the problem
obj.name = value
})
Run Code Online (Sandbox Code Playgroud)
如果itemsFromDom包含一个带有id"myId" 的元素,我想要obj一个名为"myId"的属性.以上给了我name.
如何使用JavaScript使用变量命名对象的属性?
CMS*_*CMS 451
您可以使用此等效语法:
obj[name] = value
Run Code Online (Sandbox Code Playgroud)
kub*_*ube 108
使用ECMAScript 2015,您可以使用括号表示法直接在对象声明中执行此操作:
var obj = {
[key]: value
}
Run Code Online (Sandbox Code Playgroud)
哪里key可以是任何类型的表达式(例如变量)返回值:
var obj = {
['hello']: 'World',
[x + 2]: 42,
[someObject.getId()]: someVar
}
Run Code Online (Sandbox Code Playgroud)
dnx*_*xit 12
您甚至可以像这样制作对象列表
var feeTypeList = [];
$('#feeTypeTable > tbody > tr').each(function (i, el) {
var feeType = {};
var $ID = $(this).find("input[id^=txtFeeType]").attr('id');
feeType["feeTypeID"] = $('#ddlTerm').val();
feeType["feeTypeName"] = $('#ddlProgram').val();
feeType["feeTypeDescription"] = $('#ddlBatch').val();
feeTypeList.push(feeType);
});
Run Code Online (Sandbox Code Playgroud)
访问对象属性有两种不同的表示法
点表示法既快速又简单,但您必须明确使用实际的属性名称。没有替换,变量等。
括号表示法是开放式的。它使用字符串,但您可以使用任何合法的 js 代码生成字符串。您可以将字符串指定为文字(尽管在这种情况下点符号会更容易阅读)或使用变量或以某种方式计算。
因此,这些都将名为prop1的myObj属性设置为值Hello:
// quick easy-on-the-eye dot notation
myObj.prop1 = "Hello";
// brackets+literal
myObj["prop1"] = "Hello";
// using a variable
var x = "prop1";
myObj[x] = "Hello";
// calculate the accessor string in some weird way
var numList = [0,1,2];
myObj[ "prop" + numList[1] ] = "Hello";
Run Code Online (Sandbox Code Playgroud)
陷阱:
myObj.[xxxx] = "Hello"; // wrong: mixed notations, syntax fail
myObj[prop1] = "Hello"; // wrong: this expects a variable called prop1
Run Code Online (Sandbox Code Playgroud)
tl;dnr:如果要计算或引用密钥,则必须使用括号表示法。如果您明确使用密钥,则使用点符号表示简单明了的代码。
注意:还有一些其他好的和正确的答案,但我个人发现它们有点简短,因为对 JS 的即时怪癖不太熟悉。这可能对某些人有用。
| 归档时间: |
|
| 查看次数: |
296725 次 |
| 最近记录: |