如何扩展Javascript原型
How to extend Javascript Prototype?
>我用
new Product.Image({
"title": document.querySelector('#image-title')
});
但是现在我需要扩展"Product.Image",例如"Product.BetterImage"
new Product.BetterImage({
"title": document.querySelector('#better-image-title')
});
我原来的课是这样开始的:
Product.Image = function (options) {
//do something
}
Product.Image.prototype = new Product.Data();
现在我尝试复制它以扩展"产品图像":
Product.BetterImage = function (options) {
//do something
}
Product.BetterImage.prototype = new Product.Image();
但是当我调用我的模板来启动它时,我收到以下错误:
Uncaught TypeError: Product.BetterImage is not a constructor
我在这里错过了什么或做错了什么?谁能解释一下这里出了什么问题?
这与javascript继承和原型委托有关 - 请参阅这个好的MDN页面:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain
这部分代码不是必需的,会导致问题:
Product.Image = function (options) {
//do something
}
Product.Image.prototype = new Product.Data();
正确的方法是创建"产品"类,然后直接添加到其原型中,如下所示:
var Product = function(data) {
this.data = data;
}
Product.prototype.image = function() {
// return data here
}
Product.prototype.better = function(){
// add stuff here
}
Product.prototype.betterImage = function(){
// add more stuff here
}
然后,要创建实例或实例化您使用的类,可以使用"new"关键字
var myProduct = new Product(data);
相关文章:
- 使用“;这个“;JavaScript原型方法中的关键字
- Node.js中的JavaScript原型对象效率
- 为什么要返回'这'在导致循环的JavaScript原型中
- JavaScript原型设计基础知识
- 就良好实践而言,带闭包的javascript原型是一件好事吗
- 无法从angularjs调用JavaScript原型函数
- JavaScript原型示例
- Javascript原型组织
- 未复制JavaScript原型
- JavaScript原型的意义到底是什么
- 两个对象之间的Javascript原型
- 使用特权Getter/Setter函数的JavaScript原型函数
- 语法错误,但无法调试JavaScript原型
- 澄清:Javascript原型更新混乱
- 如何进行JavaScript原型继承(原型链)
- Javascript原型通用Enquries和通过数组索引分配Id
- 理解Javascript原型继承
- JavaScript原型与实践中的对比
- JavaScript原型构造函数只调用过一次
- Javascript原型继承原型函数调用