我正在使用 https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/Proto 中描述的原型(prototype)继承
function MyString(data){this.data = data ;}
MyString.prototype = { data : null,
toString: function(){ return this.data ;}
} ;
MyString.prototype.__proto__ = String.prototype ;
现在我可以在 MyString 实例上使用 String 函数和 MyString 函数。
但由于 __proto__
已被弃用,非标准且应避免,继承对象的最佳方式是什么?
我找到了 http://ejohn.org/blog/simple-javascript-inheritance/与单行代码相比,它看起来仍然有点复杂,有点矫枉过正 :)
编辑:感谢您的回答!
最佳答案
ECMAScript 5 规范包含一个新函数 Object.create()
,它允许您创建具有特定原型(prototype)的通用对象。要获得您想要的行为:
MyString.prototype = Object.create(String.prototype)
MyString.prototype.toString = ....
Object.create
可用于创建任意长度的原型(prototype)链,只需沿链返回值即可。不幸的是,它没有给我们改变现有对象原型(prototype)链的能力(所以它没有解决数组“继承”问题)
关于javascript - JS __proto__ 继承替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5157437/