【发布时间】:2023-03-21 17:07:01
【问题描述】:
我有一个 Javascript 对象:
var Dog = function() {
this.speak = function() {
return 'woof'
}
this.trick = function() {
return 'sitting'
}
}
我想创建一个新对象 Cat,它基于 Dog 但具有不同的speak 方法:
var Cat = ???
...
this.speak = function() {
return 'meow'
}
...
所以我最终可以做到这一点:
var tabby = new Cat();
tabby.speak() //returns 'meow'
tabby.trick() //returns 'sitting'
我对“面向对象的 Javascript”几乎没有经验,似乎无法在网上找到反映我想要做什么的示例,也不知道要搜索哪些关键字。
我认为这与我在 Backbone 中覆盖函数的方式类似,但这似乎不同:
var Cat = Dog.extend({
//the speak function below would override the one that returns 'woof'
speak: function() {
return 'meow'
}
});
感谢任何帮助!
(以上是我最终目标的简化版本 - 我想覆盖 Rickshaw.Graph.Axis.X 内部的 render 方法)
【问题讨论】:
-
查看教程,了解如何在 JS 中使用原型和继承。
-
JavaScript 原型和构造函数的基本介绍可以在这里找到:stackoverflow.com/a/16063711/1641941
标签: javascript oop prototype