2016-05-19 1 views
0

Я задаю интервьюер, есть ли разница между следующим кодом:для в цикле через свойство объекта буквального VS объекта инициализируется, построенное из объекта

var o1 = { 
    a: 1, 
    b: 2, 
    c: 3 
} 

for(var p in o1) { 
    // ... 
} 

против

var o2 = new Object() 
o2.a = 1; 
o2.b = 2; 
o2.c = 3; 

for(var p in o2) { 
    // ... 
} 

Я не могу придумать никакой разницы, есть ли какие-либо ???

+0

Я бы предположительно сказал нет ... Я мог ошибаться. – Utkanos

+0

Нет разницы, https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects –

+0

Я бы также сказал нет. Но это может различаться во время выполнения (думая о том, с какой стороны '=' -знай разные вещи). – Arg0n

ответ

1

Предполагая, что точка с запятой отсутствует в new Object() линии неумышленно, то нет никакой разницы ...

http://www.w3schools.com/js/js_object_definition.asp

... за исключением того, что первый - в соответствии с этим комментарием - Выполнит Быстрее.

Два примера выше делают точно то же самое. Нет необходимости использовать новый Object(). Для простоты, удобочитаемости и скорости выполнения используйте первую (метод объектного литерала).

+1

Ссылаясь на 'w3schools', это не очень хорошая идея :( – Rayon

+0

@Rayon ... потому что ... почему именно? – MichaelK

+0

http://meta.stackoverflow.com/questions/280478/why -not-w3schools-com – Rayon

Смежные вопросы