javascript中正确的继承语法
Correct syntax for inheritance in javascript
非常简单的问题
我正在尝试理解javascript中的继承
function Animal() {
this.eats = true;
}
function Rabbit() {
this.jumps = true;
}
//Rabbit is-a Animal
Rabbit.prototype = Animal; //I'm assuming this does not inherit
alert(Rabbit.prototype.eats); // returns undefined
什么是正确的方式?
这个问题已经回答了,但请允许我为子孙后代提供另一种选择。
调用父类的构造函数来获取父类的原型不是一个好主意。这样做可能会有副作用;设置id,跟踪实例数量,以及构造函数内部发生的任何事情。
可以在Child构造函数和Object中使用Parent.call()。创建或填充以获得其原型:
function Animal () {
this.eats = true;
}
function Rabbit (legs) {
Animal.call(this);
this.jumps = true;
}
Rabbit.prototype = Object.create(Animal.prototype);
// Or if you're not working with ES5 (this function not optimized for re-use):
Rabbit.prototype = (function () {
function F () {};
F.prototype = Animal.prototype;
return new F();
}());
var bugs = new Rabbit();
alert(bugs instanceof Animal); // true
alert(bugs.eats); // true
相关文章:
- 铬:“;未捕获的语法错误:意外的标记:"
- jQuery语法添加了var
- Javascript未捕获语法错误意外的标识符错误
- 为什么忽略了eval()代码中的语法错误
- 难以访问的JS环境中的语法错误
- 如何告诉MathJax对下标使用替代语法
- Javascript语法向设置发出sessionStorage值
- 从控制器继承了隔离的作用域以生成可重用的指令
- 未捕获的语法错误:意外的标记{
- 使用$scope方法时的ControllerAs语法
- "未捕获的语法错误:意外的标记}"
- javascript自执行函数-不同的语法
- 函数的Javascript语法
- WinJS内联绑定语法
- 当使用控制器作为语法时,如何从父指令继承属性
- Dojo AMD 1.7使用declare的正确继承语法
- 具有简洁原型赋值语法的Javascript继承
- Javascript私有/公共继承语法
- 如何使用“继承”从基本控制器继承;控制器为“;语法
- javascript中正确的继承语法