javascript - JS __proto__ 继承替换

标签 javascript inheritance prototype

我正在使用 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/

相关文章:

javascript - 将函数 Hook 到原型(prototype)或不 Hook 之间的区别

javascript - 仅当 Javascript 中存在类时才允许监听器事件运行

javascript - 无法解析 Mocha 中的路径

javascript - JQuery AJAX 在 IE 上失败

C++ 将类的 this 指针分配给 unique_ptr 或 shared_ptr

java对象数组和继承

javascript - 在 jquery 元素上使用 Lodash 集合函数

javascript - DIV 和更改内容的事件监听器

c++ - 将非模板基类向下转换为非类型模板子类

javascript - JavaScript 对象的动态属性?