javascript - 原型(prototype)继承和instanceof

标签 javascript ecmascript-6 prototypal-inheritance

假设我有两个类 Entity 和 Player 的构造函数。 (Player是打算继承自Entity)

var Entity = function(speed) { this.speed = speed; }

var Player = function(name) { Entity.call(this, 10); this.name = name; }

assert(new Player('p1') instanceof Entity === false)

为了让新的 Player 对象成为 Entity 的实例,我通常会做类似...

Player.prototype = new Entity();

但这会向 Player 原型(prototype)链添加一个无用的对象,我永远不会使用它,因为我不希望玩家共享一个“速度”变量。它可能对每个玩家都是独一无二的。

Player.prototype = Entity.prototype

也不起作用,因为 Entity 对象也变成了 instanceof Player...

有没有一种方法可以模拟继承,只是让 instanceof 起作用,而不在原型(prototype)链中引入无用的对象?

最佳答案

Player.prototype = Object.create(Entity.prototype);

这将创建一个具有指定原型(prototype) (Entity.prototype) 和属性的新对象。

引用:Object.create()

在ES6中,可以像java一样使用class-关键字和extends关键字。

关于javascript - 原型(prototype)继承和instanceof,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35535631/

相关文章:

javascript - 有什么方法可以在多个页面上携带gapi.client对象吗?

javascript - Javascript 中的条件导入和导出

javascript - Typescript 中的条件默认导出

JavaScript:使用 Object.create 时获得的最大优势是什么

javascript - 如何添加样式: inline-block while a ul being toggled on without changing Javascript?

javascript - Youtube Iframe API - 视频未加载

javascript - 来自外部服务器的 phonegap 更新文件

javascript - 使用 += 获取总和在这里不起作用。为什么?

使用原型(prototype)时的 Javascript 继承问题 - 实例被覆盖 :(

javascript - 避免在 JavaScript 类型函数中使用 self=this