Я пытаюсь использовать прототипное наследование, но у меня возникают проблемы.Использование InstanceOf с прототипным наследованием в JavaScript
Это не работает
var Parent = function(){
}
var Child = function(){
this.__proto__ = new Parent();
}
var child = new Child();
console.log(child instanceof Child) //logs false
Но это делает
var Parent = function(){
}
var Child = function(){
}
Child.prototype = new Parent();
var child = new Child();
console.log(child instanceof Child) // logs true
Единственная причина, почему я хочу первый вариант, так что я могу использовать конструктор родителя. Я предполагаю, что this
проблема, но я не настолько хорош в javascript. Как это сделать?
Когда вы говорите 'this .__ proto__ = new Parent()' вы говорите «Хорошо новый объект, перестань быть« ребенком » и вместо этого начните «Parent», поэтому неудивительно, что объект больше не является экземпляром Child. – apsillers
@ capsillers - это то, что из-за этого? Почему второй метод не делает то же самое? Это потому, что я не занимаюсь «новым ребенком», когда устанавливаю прототип? –
А теперь я понимаю ваше замешательство; Я уточню свой ответ. – apsillers