2013-06-25 2 views
-1

Я читал здесь, когда переполнения стека, что они не равны. Так в чем разница.какая разница myObj.a = b vs myObj [a] = b

Произошло то, что во втором случае значение было присвоено как свойство myObj. Поэтому, если b = 'abc'; , тогда myObj.abc теперь был доступен.

Я всегда думал о том же, но версия [] использовалась, когда имя было странным.

+0

Синтаксис, но вам нужно использовать '[]', когда имена имеют специальные символы, которые не могут использоваться в формате точки. Aka имена параметров с тире, периодами и т. Д. – epascarello

+2

[Работа с объектами] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects). –

+1

дубликат [доступ к свойствам JavaScript: точечная нотация или скобки?] (Http://stackoverflow.com/questions/4968406/javascript-property-access-dot-notation-vs-brackets) и [различное поведение при использовании dot- нотация по сравнению с привязкой к скобкам] (http://stackoverflow.com/questions/4234777/javascript-different-behavior-when-using-dot-notation-vs-bracket-notation) – Bergi

ответ

0

Разница между myObj.a=b и myObj[a]=b заключается в том, что в первом случае вы получаете доступ к объекту с атрибутом a. Во втором вы получаете доступ к атрибуту, имя , имя, в переменной под названием a.

С другой стороны, myObj.a=b и myObj["a"]=b были бы эквивалентны.

0

много, результаты будут зависеть от a var value. но ["a"] будет таким же, как .a

4

Точечная нотация принимает идентификатор, который является именем свойства. Обозначение с квадратной скобкой принимает строковое представление имени свойства.

Учитывая var a = "a"; то myObj.a = b и myObj[a] = b и myObj["a"] = bявляются эквивалентны.

+0

спасибо, я думаю, что узнал этот путь назад, но не нужно было использовать скобки до сих пор. Дайте мне знать, если я прав. Кронштейны также используются для имен методов/свойств, которые не начинаются с строк, таких как 'obj. ['9'] = {};' –

+0

, поэтому, если я делаю это в основном, сбой всей программы: 'Object.prototype [4] = {} ; ' –

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