javascript - JavaScript 的简单继承

标签 javascript inheritance constructor superclass

function StringStream() {}
StringStream.prototype = new Array();
StringStream.prototype.toString = function(){ return this.join(''); };

调用new StringStream(1,2,3)给出一个空数组

x = new StringStream(1,2,3)

给出

StringStream[0]
__proto__: Array[0]

有人可以解释一下为什么没有调用父类(super class)(Array)构造函数吗?

最佳答案

仅仅因为 StringStream.prototype 是一个数组,StringStream 构造函数也不会被 Array 替换。

您应该自己实现:http://jsfiddle.net/gBrtf/ .

function StringStream() {
    // push arguments as elements to this instance
    Array.prototype.push.apply(this, arguments);
}

StringStream.prototype = new Array;

StringStream.prototype.toString = function(){
    return this.join('');
};

关于javascript - JavaScript 的简单继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7697914/

相关文章:

c# - 使用 base 创建构造函数的快捷方式 (C# Visual Studio 2015)

javascript - 用于多个事件的 bool if 语句纯 JavaScript

javascript - 为什么 0 < -0.75 < 1 为真?

javascript - AngularJS 常量

Java:转换为接口(interface)和继承

objective-c - 从弱链接的 iOS 类或不在部署目标 iOS 版本中的类继承

c++ - 不明确的模板类构造函数

javascript - 使用 jQuery 更改背景图片

c# - 将子类转换为继承类

c++ - 使用折叠表达式构造平凡对象