Почему прототип javascript не работает в этом случае
Мой случай (почему "test1" не появляется в окне предупреждения):
var Parent=function(){
this.test1= function(){
alert("test1");
}
}
var Child=function(){
this.prototype=new Parent();
}
var test=new Child();
test.test1();
http://jsfiddle.net/c3sUM/2/ (тот же код онлайн, чтобы попробовать)
Спасибо
2 ответа
Решение
Проблема в том, что вы не назначили Child
прототип, но вместо этого, сделал свойство prototype
в случае Child
который указывает на случай Parent
,
var Child = function(){}; // create constructor
Child.prototype = new Parent(); // assign instance of parent to constructor's
// prototype
Подобный ответ может помочь
Ваш код будет намного понятнее, если использовать объявления функций:
// Parent constructor
function Parent() {}
// Methods of Parent.prototype are inherited by
// instances of parent
Parent.prototype.test1 = function() {
alert('test 1');
}
// Child constructor
function Child(){}
// Make Child.prototype an instance of Parent so
// instances inherit from Child and Parent
Child.prototype = new Parent();
// Instance inherits from Child (and hence Parent);
var child = new Child();
child.test1(); // 'test 1'
Единственная причина использования выражений функций над объявлениями в этом случае состоит в том, что вы хотите динамически создавать конструкторы на основе некоторой другой логики.