在JavaScript中,对象和哈希之间有什么区别?你如何创造一个与另一个,你为什么要关心?以下代码示例之间是否有区别?
var kid = {
name: "juni",
age: 1
}
Run Code Online (Sandbox Code Playgroud)
和:
var kid = new Object();
kid.name = "juni";
kid.age = 1;
Run Code Online (Sandbox Code Playgroud)
和:
var kid = new Object();
kid["name"] = "juni";
kid["age"] = 1;
Run Code Online (Sandbox Code Playgroud)
你能想到我应该说明的任何其他代码示例吗?
这里的核心问题是对象和哈希之间的区别是什么?
Mar*_*cin 57
没有任何东西.所有这三者在字面上都是平等的.
Ian*_*ott 18
它们是可以互换使用的不同符号系统.在许多情况下,使用括号语法[ ]可能更具吸引力,例如在引用具有变量的对象时.
var temp = "kid";
var obj = new Object();
obj[temp] = 5; // this is legal, and is equivalent to object.kid
obj.temp = 5; // this references literally, object.temp
Run Code Online (Sandbox Code Playgroud)
在Java和C#等其他语言中,可以使用任何对象(不仅仅是字符串或数字)作为哈希表/哈希映射中的键,而JavaScript中不是这种情况:键只是转换为字符串.
var h = {}, k = {};
h[k] = "One";
alert( h[ "[object Object]" ] ); // Alerts "One"
Run Code Online (Sandbox Code Playgroud)
使用任意对象作为键可能很有用,在这种情况下,您可以使用类似jshashtable的东西.
免责声明:我写了jshashtable.
实际上,JavaScript中的每个对象都是一个哈希。这是对象的属性和方法的哈希。实际上,Javascript中的所有内容都是哈希(即名称/值对的列表)。
每次调用对象的方法,属性或仅引用任何变量时,都将执行内部哈希查找。