使用下划线的Javascript继承
Javascript inheritance using underscore.js
我使用下划线。js _。创建继承实现函数,但当我尝试使用ListMakerTask_2:
ListMakerTask_2.initialize("div1", phones);
ListMakerTask_2.RenderList();
它给了我:
TypeError: ListMakerTask_2.initialize is not a function
但是当我使用ListMakerTask_1它工作得很好:
ListMakerTask_1.initialize("div1", phones);
ListMakerTask_1.RenderList();
类层次结构:
var Abstract_ListMaker = {
divID: null,
arr: null,
//Empty abstract function
initialize: function(){},
//Empty abstract function
RenderList: function(){}
};
var ListMakerTask_1 = _.create(Abstract_ListMaker.prototype,{
initialize: function(divID, arr){
this.divID = divID;
this.arr = arr;
},
RenderList: function(){
var out = "<ul>";
for(var i = 0; i < this.arr.length;i++){
out+="<li>" + this.arr[i].age +"<br>" + this.arr[i].id +"<br><img src='" + this.arr[i].imageUrl +"'/><br>" + this.arr[i].name + "<br>" + this.arr[i].snippet + "</li>";
}
out+= "</ul>";
document.getElementById(this.divID).innerHTML = out;
}});
var ListMakerTask_2 = _.create(ListMakerTask_1.prototype, {RenderList: function(){
var createNewUL = document.createElement("ul");
createNewUL.id = "phoneList";
document.getElementById(this.divID).appendChild(createNewUL);
for(var i = 0; i < this.arr.length;i++) {
var chunk = "<li>" + this.arr[i].age + "<br>" + this.arr[i].id + "<br><img src='"
+ this.arr[i].imageUrl + "'/><br>" + this.arr[i].name + "<br>" + this.arr[i].snippet + "</li>";
document.getElementById("phoneList").innerHTML += chunk;
}
}});
我发现了一个问题:
var ListMakerTask_2 =_.create(ListMakerTask_1.prototype,...);
我已经删除了.prototype
,现在它工作了。
相关文章:
- 关于Javascript继承,我可以'我不明白
- Javascript继承代码集
- Javascript:继承原型而不重新定义构造函数
- JavaScript继承:未捕获的范围错误:超过了最大调用堆栈大小
- JavaScript继承:为什么从实例复制
- javascript继承中正确的原型做作是什么
- 没有原型的Javascript继承
- Javascript继承-使用.call方法
- 运行Javascript继承代码时出错
- Javascript继承构造函数
- Javascript继承和封装,高效完成
- 具有简洁原型赋值语法的Javascript继承
- Javascript继承的问题&基类原型
- JavaScript继承构造函数.prototype
- javascript继承说明
- Javascript继承:从超类的方法设置子类的属性
- 简单的 Javascript 继承示例
- 具有意外行为的 JavaScript 继承
- 基于实例的 JavaScript 继承
- 为什么 JavaScript 继承是这样工作的