2015-07-14 3 views
0

Я написал следующий код, и он не показывает никаких предупреждений.Объект метода в javascript

var test = function(message) { 
    this.show = function() { 
     alert(message) 
    } 
} 
(new test("hiii")).show(); 
(new test("helooo")).show(); 

Когда изменено на следующее ... Удалены кронштейн - (new test("hiii")).show();

Он показывает, как "НШ" и "Helooo" боевой готовности.

Примечание: Я не делал никаких изменений - (new test("helooo")).show();

var test = function(message) { 
    this.show = function() { 
     alert(message) 
    } 
} 
new test("hiii").show(); // was(new test("hiii")).show(); 
(new test("helooo")).show(); 

Может кто-нибудь объяснить, почему?

+0

Оба решения работают хорошо для меня. – TheFrozenOne

+0

@zerkms Я скопировал этот первый блок кода в консоль отладки Firefox и получил ошибку. – Pointy

+0

@zerkms - вы добавили точку с запятой! – Pointy

ответ

4

Проблема, как ни странно, с тем, что вы вышли из точки с запятой после выражения функции:

var test = function(message){ 
    this.show = function() { 
      alert(message) 
    } 
} // <-- missing semicolon 

Это означает, что (...) следующее выражение функции берется список аргументов для вызов функции.

Добавьте, что пропавшая точка с запятой и первый блок кода будут работать.

1

С точкой с запятой нет, он будет принимать как выражение функции самостоятельно вызывающего с аргументом new test("hiii") так что используйте его как этот

var test = function(message) { 
    this.show = function() { 
     alert(message) 
} 
}; 
(new test("hiii")).show(); 
(new test("helooo")).show(); 
Смежные вопросы