如何计算对象文字中的键
How are keys in an object literal evaluated?
这是我的函数
function goldAndSilver(bin) {
var gold = bin.gold;
var silver = bin.silver;
return { gold: gold, silver: silver };
}
当执行上下文中已经遇到var gold = bin.gold
时,为什么第一个gold
引用名称,而第二个gold
引用值。线路运行后,gold = number
不总是吗?返回的结果应该是{5: 5}
而不是{gold: 5}
?
使用这种表示法{ gold: gold, silver: silver }
,冒号之前的单词将始终是名称,它从不引用变量。
如果你想使用一个变量作为对象属性的名称,可以这样做:
var gold = 5;
var obj = {};
obj[gold] = gold;
这导致Object {5: 5}
否,因为默认情况下不会计算对象键。属性的名称将与您命名的名称完全相同。但是,使用ES2015,您可以使用计算的属性名称,该名称允许您使用动态值命名属性。
(注意,这只适用于支持新语法的浏览器):
var gold = 5;
var obj = {
[gold]: gold
};
document.write('<pre>' + JSON.stringify(obj, null, 2) + '</pre>');
这是对象表示法。这里":"前面的第一个单词是关键。它总是一根绳子。这就像为要指定的值指定一个名称。第二个是价值。在这种表示法中,不能将变量指定为键。键将始终是常量和字符串。
{ gold: gold, silver: silver }
is same as
var obj = { 'gold': gold, 'silver': silver }
若要将变量指定为关键字,必须使用方括号表示法。
var key1='gold';
var key2='silver';
var obj={};
// assuming gold and silver to defined
obj[key1]=gold;
obj[key2]=silver;
在这两种情况下,obj是相同的。但第二种格式可以在赋值之前已知关键字名称的情况下使用。
例如,让我们看看克隆对象的代码(一个级别):
function clone(original){
var clone={};
for(var key in original){
// Dont know what is the value of key. So we need to use square
//bracket. clone.key would be incorrect to use because it would be
//considered string.
clone[key]=original[key];
}
return clone;
}
相关文章:
- 是否可以将字符串转换为文字对象数组
- jQuery:如何使用文字对象方法中的方法来获取全局变量
- 如何检查文字对象是否在 Javascript 数组中
- Javascript解析序列化的Groovy映射到JS文字对象
- asp.net 文字对象传递给 JavaScript
- 文字对象和jquery选择器DRY
- 将文字/对象/类传递给具有数千次调用的函数的内存含义
- Javascript 文字对象和单例模式
- 如何在 PHP 中将 JavaScript 文字对象转换为 Json 对象
- 将文字对象转换为对象'的属性
- 文字对象中的元素
- 将开关大小写(在c++中)替换为javascript中的文字对象
- 使用函数式编程过滤文字对象
- 关于文字对象,也许还有自动执行函数
- 如何访问“参数”来自闭包的外部函数的文字对象
- 关于文字对象语法的限制
- 在文字对象中创建属性
- JavaScript异步调用文字对象函数
- 文字对象和函数构造函数
- 奇怪的行为和使用Object的多个实例.在文字对象上创建