Создание объекта Javascript с использованием литералов и пользовательских функций конструктора

Я понимаю, что существует несколько способов создания объекта в javascript, и я читал, что литеральный синтаксис объекта обычно предпочтительнее. (Верный?)

Чего я не смог понять, так это того, есть ли какая-либо причина использовать какой-либо другой способ создания объектов, например, функцию пользовательского конструктора (var p = new Person("Adam"))? Правда ли использовать пользовательскую функцию конструктора, только если я хочу закрытые переменные или добавить методы или свойства к ее прототипу? Нет ли способа сделать это в буквальном смысле?

 zzzzBov03 апр. 2012 г., 16:24
наследование прототипов, расширение класса, упрощенное построение повторяющихся объектов, проверка типов черезinstanceof... назвать несколько.

Ответы на вопрос(3)

Решение Вопроса

когда хотите создать экземпляры объектов, похожие на Java.

Например:

function MyObj(x){
   this.x = x;
}

MyObj.prototype.printX = function(){
   alert(this.x);
}

var obj1 = new MyObj("hello");
var obj2 = new MyObj("hello2");
obj1.printX();//prints hello
obj2.printX();//prints hello2

Теперь у меня есть два экземпляра этого объекта. Если бы я использовал строковые литералы, мне нужно было бы клонировать объект в новую переменную, чтобы получить другой экземпляр.

var p = { "name":"Adam" };

Если у вас много переменных-членов, которые нужно инициализировать, или вы будете использовать много объектов (например, их массив) и т. Д., То имеет смысл только продолжить и создать функцию (конструктор), которая будет выполнять все это для вас. Если вы не хотите, чтобы ваш код выглядел так:

var a = { "name":"Adam", "age":23, "city":"Boston" };
var b = { "name":"Jeff", "age":24, "city":"San mateo" };
var c = { "name":"Aaliyah", "age":25, "city":"New York" };
var d = { "name":"Mary", "age":26, "city":"Dallas" };
 user89540003 апр. 2012 г., 16:20
JSON кажется неправильной терминологией. JSON не допускает методы для одного.
 user89540003 апр. 2012 г., 17:06
JSON - это формат передачи данных. Это комбинация массива и буквенной нотации объекта. Если это означает то же самое, что и объектные литералы, зачем поправлять меня и говорить, что предпочтительным форматом является JSON, почему бы просто не согласиться со мной, что объектные литералы предпочтительны?
 Tim Down03 апр. 2012 г., 17:16
@zzzzBov: JSON является подмножеством литерального синтаксиса объектов JavaScript, поэтому здесь он не совсем корректен.
 Authman Apatira03 апр. 2012 г., 16:50
Плюс это позволяет методы; Вы можете создать функцию внутри объекта JSON (хотя это не очень хорошая практика). Как правило, JSON должен быть аккуратным и компактным.
 zzzzBov03 апр. 2012 г., 16:21
@ user895400, JSON означает нотацию объектов JavaScript. Это JavasScript, и мы используем его обозначение объекта. JSON правильно.

Обсуждение обычно собирается предпочесть

var myObject = {};

над

var myObject = new Object();

Однако, если вы создавать свои собственные функции конструктора вы совершенно разрешены их экземпляры с новым ключевым словом, ничего противоречивым там.

Ваш ответ на вопрос