javascript继承为什么要用Object.create?

标签 javascript jquery backbone.js

我在 StackOverflow 中看到了这个: https://stackoverflow.com/a/7786090/289246

答案告诉我们要做的事情:

DynamicBody.prototype = Object.create( PhysicsBody.prototype );

使用Object.create的原因是什么?
为什么我们不能直接使用:

DynamicBody.prototype = PhysicsBody.prototype;

最佳答案

您可以(技术上),但是您对 DynamicBody.prototype 所做的任何更改也将在 PhysicsBody.prototype 上进行,即它将影响所有 PhysicsBody 实例,这通常不是您想要的。

示例:

function Foo() {};
Foo.prototype.say = function() {
   alert('Foo');
};
var foo = new Foo();

function Bar() {};
Bar.prototype = Foo.prototype;
Bar.prototype.say = function() {
    alert('Bar');
};

foo.say(); // alerts 'Bar'

Object.create 添加一级间接。

关于javascript继承为什么要用Object.create?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15304318/

相关文章:

javascript - backbone.js 和 el 属性

javascript - Jquery函数运行多次

javascript - 如何将转换统计数据发送到 Media Manager 分析服务器?

javascript - 通过鼠标按下选择父级中的最后一个子级

javascript - 使用Ajax在另一个页面上显示输入值

javascript - Backbone.js:嵌套 View 的路由

javascript - Backbone.js 在 Ctrl+s 事件期间失去焦点

javascript - 是否可以将 EJS 变量传递给 Angular ng-repeat 过滤器?

javascript - Webpack 和以编程方式注入(inject)的内容脚本

javascript - 从双重选择器中排除一个类的麻烦