2013-06-13 2 views

ответ

2
function User(name) { 
    this.name = name; 
}; 

var j = new User('Jack'); 
alert(j.name) 

Вам нужен new ключевое слово, чтобы использовать User как конструктор. Без него в User ссылается на глобальный объект (окно в браузере), и новый объект не создается. j будет неопределенным.

Использование new создает новый объект, который присваивается j, а затем привязывается к этому объекту this. Таким образом, name будет установлен на вновь созданном объекте, а не на окне.

+1

Я не думаю, что это достаточно. Мы смотрим на функцию здесь, а не на класс. Действительно ли это относится к функции? Я так не думаю. –

+0

@Maxim. Вы не очень велики на основе наследования на основе прототипов JavaScripts, не так ли? :-) – amn

+1

@amn Guess нет, нет * это * большой по крайней мере. :) –

4

Если вы не используете new, чтобы создать пользователя, this означает глобальное окно объекта. window.name отличается в разных браузерах.

Так должно быть new User("Jack");

+1

«window.name отличается в разных браузерах» после того, как вы запустите этот код, он не будет отличаться :) –

+0

@ ben336 LOL, да он не будет отличаться –

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