aze*_*rty 8 javascript inheritance prototype
我正在使用原型继承,如https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/Proto中所述
function MyString(data){this.data = data ;}
MyString.prototype = { data : null,
toString: function(){ return this.data ;}
} ;
MyString.prototype.__proto__ = String.prototype ;
Run Code Online (Sandbox Code Playgroud)
现在我可以在MyString实例上使用String函数和MyString函数.
但既然__proto__已经弃用,非标准且应该避免,那么继承对象的最佳方法是什么?
我找到了http://ejohn.org/blog/simple-javascript-inheritance/,与单行代码相比,它看起来仍然有点复杂,有点矫枉过正:)
编辑:谢谢你的回答!
ECMAScript 5规范包含一个新功能Object.create(),允许您使用特定原型创建通用对象.要获得您想要的行为:
MyString.prototype = Object.create(String.prototype)
MyString.prototype.toString = ....
Run Code Online (Sandbox Code Playgroud)
Object.create可以用来创建一个任意长的原型链,只需通过链返回值.不幸的是,它没有让我们能够改变现有对象的原型链(因此它不能解决数组"继承"问题)
大概:
MyString.prototype = new String;
Run Code Online (Sandbox Code Playgroud)
完成此操作后,您可以使用您的方法来扩展原型:)