2015-09-16 4 views

ответ

0

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

function Person(name){ // <-- here 
    this.name = name; 
} 

Person2 = Person; 

var person2 = new Person2("Jane"); 
console.log(person2.name); 

UPDATE: Я пропустил его, потому что я думал, что это не релевантно (и явно очевидно), но «результат» назначается, потому что на этой странице скрипта есть глобальная переменная с именем «имя» со значением «результат» уже ssigned.

+0

Ой, не спал хорошо, я думаю ... :-) Принимать в течение нескольких минут. – Trace

+0

, если 'name' не передается, он должен отключить' undefined'. Вопрос в том, почему это консоль 'result'. – intekhab

+0

@intekhab Поскольку код не является полным, есть что-то, что можно было бы описать перед 'var name = 'blah';' перед функцией. Попробуйте следующее: http://jsfiddle.net/oa5ugmo4/ –

1

Это не (в общем). В вашем конкретном Fiddle присутствует глобальная переменная name, которую вы назначаете this.name, которая имеет значение «результат». Этого не происходит в «чистых» средах. Там он печатает undefined.

Основной причиной является ваш отсутствующий параметр в конструкторе:

function Person(name) { 
    this.name = name; 
} 
+0

Я согласен, что-то испортилось в моей среде скрипки. Поднимитесь, я отвечу на ответ Пабло. (он был первым, и это просто вопрос забывания параметра). – Trace

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