2014-01-23 3 views
3

У меня возникли проблемы с различными способами объявления js-объектов, особенно после прочтения документации knockout.js. Кажется, они смешивают все возможные пути. В чем большая разница между этими четырьмя способами объявления объекта?различные способы объявления объектов javascript - разница?

var object = new Object(); 
name.field = bla; 
name.method = function() { bla }; 

var object = { 
field : "bla", 
method : function() { bla }; 
} 

-> Я думаю, это эквивалентные, просто разные обозначения. Но во втором случае, как бы вы передавали параметры? Или это вообще невозможно?

И в двух bwlo: В чем разница между хранением его в переменной и не хранением его в переменной (отличной от способа передачи объекта функции)?

function object() { 
this.field = "bla"; 
this.method = function() { bla }; 
} 

otherfunction(new Object()); 

var myobject = function name() { 
this.field = "bla"; 
this.method = function() { bla }; 
} 

otherfunction(new myobject()); 
otherfunction(myobjet); 

РЕДАКТИРОВАТЬ: Извините, что спросила еще раз, не увидела другого в предлагаемых темах.

+1

Что вы подразумеваете под «как бы вы прошли параметры»? – basilikum

ответ

1

В первом вы используете новое заявление:

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

Таким образом, вы можете создать объект любой функции можно определить

var x = function() {}; 
new x(); 

Вторая вещь литерал объекта:

Объект литерал представляет собой список из нуля или более пар имена свойств и связанные с ними значения объекта, заключенные в фигурные скобки ({}).

Это всегда экземпляр функции объекта. Почему вы хотите передать параметры здесь? Вы определяете явный объект, здесь нет необходимости передавать параметры.

+0

Спасибо за ваш ответ! Сейчас я получаю информацию о прохождении параметров. – user2791739

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