在JavaScript中,通常将对象用作哈希:
hash = {};
hash.key = 'value';
甚至可以使用带空格的键:
hash['a key'] = 'a value';
但是有一些限制:不能将密钥称为
__proto__
,constructor
,hasOwnProperty
,isPrototypeOf
,propertyIsEnumerable
,toLocalString
,toString
,valueOf
,__defineGetter__
,__defineSetter__
,__lookupGetter__
,__lookupSetter__
,因为这会导致名称空间与JavaScript对象的内部冲突。
绕过这种限制的最佳方法是什么?
答案 0 :(得分:2)
您可以使用Object.create
并将父级设为null
,例如
var data = {};
console.log(
data.toString
); // in parent prototype there is toString method. returns function
var hash = Object.create(null);
console.log(
hash.toString,
hash.valueOf,
hash.__defineGetter__
); // will be undefined because we set parent as null