sac*_*024 3 javascript arrays json object
无意中,在我的项目中,我使用了以下代码,我很惊讶地看到它正在工作:
HTML
<span id="output"></span>
Run Code Online (Sandbox Code Playgroud)
使用Javascript
var myObject = {
'a': '----First---',
'b': '----Second---',
'c': '----Third----'
};
var myArray = ['a'];
// First Case
output.innerHTML = myObject[myArray];
var myArray2 = ['b'];
// Second Case
output.innerHTML += myObject[myArray2];
var myArray3 = ['a', 'b'];
// Third Case
output.innerHTML += myObject[myArray3];
Run Code Online (Sandbox Code Playgroud)
产量
----First-------Second---undefined
Run Code Online (Sandbox Code Playgroud)
Jsbin Link:http://jsbin.com/godilosifu/1/edit?html,js,output
我直接访问Object中的数组引用,在所有情况下都应该是未定义的,但奇怪的是当数组大小为1时,它总是获取第一个元素并将其用作对象键.
我只是想知道这个概念叫什么,为什么会这样?
因为属性名称必须是字符串,所以使用该toString()方法将其类型转换为一个字符串.第三个示例未定义的原因是['a', 'b'].toString()equals 'a,b',它不是对象中的属性.
物业名称
属性名称必须是字符串.这意味着非字符串对象不能用作对象中的键.任何非字符串对象(包括数字)都通过toString方法进行类型转换为字符串.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_Accessors
值得注意的是,在ECMAScript 6中,有一个名为的新集合类型Map,它允许您将任何对象用作没有类型强制的键.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map
| 归档时间: |
|
| 查看次数: |
627 次 |
| 最近记录: |