gpt4 book ai didi

javascript - 在 javascript 中,创建属性时,哪个是正确的方法或更好的语法?

转载 作者:行者123 更新时间:2023-12-01 16:09:12 24 4
gpt4 key购买 nike

可以使用点符号和方括号访问和设置属性(键)。什么时候使用点原型(prototype)语法的任何建议

var myObj = {};   
myObj.myProp1 = 'value1'; //works, an expando property
myObj[myProp2] = 'value2'; // FAILS, myProp2 is undefined
myObj["myProp2"] = 'value2'; // works, an expando property
myObj[2010]= 'value'; //note the key is number, still works, an expando property??
myObj.2010 = 'value'; // FAILS. to use dot notation, key must be a string

myObj.prototype.myProp3 = 'value3' // whats the advantage?

最佳答案

当使用点语法时,属性名是一个标识符:

var myObj = {};
myObj.myProp1 = "value1";
myObj.myProp2 = "value2";

由于属性名称必须遵循标识符命名规则,例如它可以不以数字开头。

使用括号语法时,属性名是字符串:

var myObj = {};
myObj["myProp1"] = "value1";
myObj["myProp2"] = "value2";

括号中使用的可以是变量,或任何类型的结果为字符串的表达式:

var myObj = {};
var prop1 = "myProp1";
myObj[prop1] = "value1";
myObj["myProp" + 2] = "value2";

如果使用数字作为属性名,它会自动转换为字符串,因此它们具有相同的结果:

myObj[2010] = "value";
myObj["2010"] = "value";

您还可以使用对象字面量来设置值:

var myObj = { myProp1: "value1", myProp2: "value2" };

(请注意,{} 也是一个对象字面量,只是没有属性。)

仅当您已命名对象类型(或以其他方式为对象分配原型(prototype))时,使用对象原型(prototype)才有用。当您使用对象字面量创建对象时,每个对象都有自己的原型(prototype),因此将任何内容放入原型(prototype)中与将其放入对象中具有相同的效果。

关于javascript - 在 javascript 中,创建属性时,哪个是正确的方法或更好的语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4735004/

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