没有原型的Javascript继承
Javascript inheritence without prototype
请参阅-http://jsfiddle.net/sf4oaxun/
function a() {
this.say = function () {
alert("hello");
};
}
a.prototype.what = function () {
alert("234234");
};
function b() {}
//b.prototype = Object.create(a);
//b.prototype = a;
var b1 = new b();
b1.say();
- 2条评论的行,它们不同吗
为什么say不被调用,并且在使用任何注释行时出错(请取消注释)
b.prototype = Object.create(a); b.prototype = a;
- 快速添加问题-如果"b"使用b.prototype=Object.create(a.prototype)从"a"继承,那么b的实例是否无法调用未在a的原型上定义的任何a方法?请参阅-jsfiddle.net/sf4axun/3
say
仅在函数a的构造函数中可用。它不会被继承。
这就是b1.say()不可用的原因。
另一件事是,这两种说法都是错误的。
应该是
b.prototype = Object.create(a.prototype)
使得CCD_ 2属性将由b.继承
另一种方法是
b.prototype = a.prototype
但在这种情况下,对b.prototype
的任何更改都会影响a.prototype
如果您也想继承构造函数属性,那么
b.prototype = new a();
DEMO
当您使用Object.create时,原型会被遍历,但您的构造函数永远不会运行。这是原始A"类"中的代码没有实际执行。为了让b1既有发言权又有发言权,你会做
b.prototype = new a();
相关文章:
- 关于Javascript继承,我可以'我不明白
- Javascript继承代码集
- Javascript:继承原型而不重新定义构造函数
- JavaScript继承:未捕获的范围错误:超过了最大调用堆栈大小
- JavaScript继承:为什么从实例复制
- javascript继承中正确的原型做作是什么
- 没有原型的Javascript继承
- Javascript继承-使用.call方法
- 运行Javascript继承代码时出错
- Javascript继承构造函数
- Javascript继承和封装,高效完成
- 具有简洁原型赋值语法的Javascript继承
- Javascript继承的问题&基类原型
- JavaScript继承构造函数.prototype
- javascript继承说明
- Javascript继承:从超类的方法设置子类的属性
- 简单的 Javascript 继承示例
- 具有意外行为的 JavaScript 继承
- 基于实例的 JavaScript 继承
- 为什么 JavaScript 继承是这样工作的