如题,如果有一个
object = {
}
for(let i = 0 ; i < 1000 ; i ++ ) {
object[generator()] = "aaa" ;
}
function generator (){} //返回一个很长的,不排序的字符串
这个字符串如果太长,或者里面的字符比较复杂有中文有英文也有标点符号的话,会不会对性能有影响,或者在通过 object["已经知道的字符串"]来访问的时候会不会很慢。
不会你想象那么慢,js属性是hadh方式查找,长字符串也会生成对应hash值。
https://segmentfault.com/a/1190000007692754
这个要看底层的实现,对于google v8等现代的js引擎来说,你多虑了,因为它可以很巧妙地将obj[prop]这样的访问通过jit提前编译为静态的绑定,效率和obj.prop是几乎相同的。
如果你有顾虑,可以自己验证下。
s对象基于是hash表存储的,字符串很长会慢点,但不会特别慢
http://www.360doc.com/content/17/0111/15/2793098_621786220.shtml
不会那么慢的,不过你可以generator (){} 返回uuid.