Почему этот код не работает должным образом? Что-то не хватает?Функция Javascript не создает новый объект
function User(name) {
this.name = name;
};
var j = User('Jack');
alert(j.name)
Почему этот код не работает должным образом? Что-то не хватает?Функция Javascript не создает новый объект
function User(name) {
this.name = name;
};
var j = User('Jack');
alert(j.name)
function User(name) {
this.name = name;
};
var j = new User('Jack');
alert(j.name)
Вам нужен new
ключевое слово, чтобы использовать User
как конструктор. Без него в User
ссылается на глобальный объект (окно в браузере), и новый объект не создается. j
будет неопределенным.
Использование new
создает новый объект, который присваивается j, а затем привязывается к этому объекту this
. Таким образом, name
будет установлен на вновь созданном объекте, а не на окне.
Я не думаю, что это достаточно. Мы смотрим на функцию здесь, а не на класс. Действительно ли это относится к функции? Я так не думаю. –
@Maxim. Вы не очень велики на основе наследования на основе прототипов JavaScripts, не так ли? :-) – amn
@amn Guess нет, нет * это * большой по крайней мере. :) –
Если вы не используете new
, чтобы создать пользователя, this
означает глобальное окно объекта. window.name
отличается в разных браузерах.
Так должно быть new User("Jack");
«window.name отличается в разных браузерах» после того, как вы запустите этот код, он не будет отличаться :) –
@ ben336 LOL, да он не будет отличаться –
'Новый пользователь ('Jack');' – Prinzhorn