Is there anything that guarantees constant time for accessing a property of an object in JavaScript?

后端 未结 1 827
故里飘歌
故里飘歌 2020-11-27 23:54

This is in regards to a debate I had with an interviewer when I was interviewing at Amazon.

Let\'s I create an object:

var Obj = {};
Obj[\'SomePrope         


        
相关标签:
1条回答
  • 2020-11-28 00:22

    Is there anything in the JavaScript guaranteeing that the values are looked up in O(1) time?

    No. JavaScript does not give any complexity guarantees whatsoever, except for ES6 collections.

    I know the access operator [] gives a seasoned programmer the impression that he's dealing with an O(1) lookup structure

    Yes you are, this is a reasonable expectation. Engines employ all kinds of optimisations, from hidden classes over hashmaps to dynamic arrays, to meet these assumptions.

    Of course, never forget that JS objects are complex beasts, and accessing a simple property might trigger a getter trap that in turn could do anything.

    Can't it be possible for a JavaScript engine to implement Object in a way such that properties are not looked up in O(1)?

    Yes, that's possible.

    0 讨论(0)
提交回复
热议问题