Почему я не могу установить прототип внутри функции? Например, почему это не работает?Почему я не могу установить прототип JavaScript внутри функции?
var Bar = function(){
this.name='Bar'
}
var barProto = new Bar()
var Foo = function(){
this.prototype= barProto
}
var foo = new Foo()
console.log(foo.name) // undefined
Но это действительно работает:
var Bar = function(){
this.name='Bar'
}
var barProto = new Bar()
var Foo = function(){
}
Foo.prototype= barProto
var foo = new Foo()
console.log(foo.name) // Bar
мне не нравится синтаксис присвоения прототипа после того как я создал функцию.
Я Сорт получить то, что вы говорите. Но разве я не хочу, чтобы новый объект, созданный для прототипа barProto, не так ли? Создается ли прототип только при использовании «нового»? Почему я не могу установить свойство прототипа какого-либо объекта в любое время? – Eddie
То, что я говорю, точно такое же, как ben336. «Почему я не могу установить свойство прототипа какого-либо объекта в любое время?» - вот как работает язык ... Может быть, вы предпочитаете 'var foo = Object.create (barProto)'? Это тоже работает и не требует конструктора 'Foo' или ключевого слова' new'. – bfavaretto