问题标签 [object-create]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
3321 浏览

node.js - 如何使用 Object.create 在 node.js 中的模块内进行继承

我有一个模块 Vehicle ,其中包含一般车辆信息。我有另一个模块 Car,它为 Vehicle 对象添加了更多功能。

我正在考虑将 Object.create 用于 Car 模块,但不确定 Object.create 调用应该去哪里。

  • 我是否应该在 Car 模块中有一个构造函数,该构造函数采用 Vehicle 对象的实例,并使用 Vehicle 实例作为原型进行 Object.create ?
  • 或者 Object.create 是否应该发生在 Vehicle 对象的函数中,例如 createCar?我对这种方式的问题是,Car 应该关心它是从 Vehicle 派生的,Vehicle 不应该知道 Car 需要它。
  • 或者即使 Object.create 是正确的方法。

请,任何示例和最佳实践将不胜感激。

更新:

我更改了示例以更好地反映我正在尝试解决的继承问题。

0 投票
2 回答
1149 浏览

javascript - Object.create 与直接原型继承

我一直在玩 EcmaScript 5 规范中的 Object.create,我正在尝试创建一个多重继承类型结构。

假设我有几个函数:a、b 和 c。只处理原型,我可以这样做:

但是使用 Object.create,我会这样做:

我想我两种方式都得到相同的结果。

这似乎有点笨拙,因为我回到对象而不是构造函数。在我看来,进行常规原型继承的侵入性较小,并且对于不需要任何特殊处理即可工作的模块化应用程序更有意义。

我错过了什么吗?尝试通过制作构造函数来制作 Object.create 有什么好处吗?还是这仅对复制现有对象有用?我只想访问附加到原型的属性和函数,而不是之后添加到对象的函数和属性。

或者这个(或者使用更好的深拷贝,但想法保持不变)?

0 投票
4 回答
5845 浏览

javascript - 有什么理由在 JavaScript 中使用 Object.create() 或 new 吗?

new到目前为止,我一直在 JavaScript 中使用关键字。我一直在阅读Object.create,我想知道是否应该改用它。我不太明白的是我经常需要运行构造代码,所以我根本不知道Object.create它会如何工作,因为它不会触发任何函数运行。

谁能告诉我,在哪种情况下我应该使用Object.create而不是new

0 投票
1 回答
5918 浏览

javascript - IE从哪个版本开始支持Object.create(null)?

您可以通过多种方式在 JavaScript 中创建对象:

但是不知道哪个版本的IE支持最后一种方法,即Object.create(null)方法?

0 投票
1 回答
710 浏览

javascript - 在 forEach 循环中使用 Object.create

我正在使用 javascript/html5 编写纸牌游戏

我将游戏状态作为 ajax 请求。这是 JSON 数据,列出了玩家以及他们手中的牌

我正在尝试遍历每个玩家并将手牌数据设置如下

页面上有六个画布。每个玩家一个

我正在使用 Object.create 创建一只手的新“实例”。然后调用 draw 方法,在画布上布置图像

然而,实际发生的是每个玩家数据只是被添加到同一个实例中

即每次我绕过forEach循环时,手对象只会被分配越来越多的卡片

我想为每个玩家提供一个单独的实例

那么我该如何实现呢?

我想循环数据并为循环的每次迭代创建一个新手

我猜手变量已被提升出循环,所以我每次都得到相同的变量?

这就是手的样子

0 投票
3 回答
245 浏览

javascript - Javascript 中的继承和 Object.Create

看看这段代码:

我不明白为什么对象 dict 中 dict[X].options.name 中的所有属性都具有相同的值(2)而 dict[X].name 中的属性具有不同的值?

0 投票
1 回答
1783 浏览

javascript - 使用 Object.create 的优势

类似于,但不同于这个问题。下面的代码来自JavaScript: The Definitive Guide。他基本上是在定义一个继承方法,如果 Object.create 存在,则该方法遵循它,否则使用构造函数和交换原型进行普通的旧 Javascript 继承。

我的问题是,既然 Object.create 在很多常见的浏览器IE上都不存在,那么尝试使用它有什么意义呢?它肯定会使代码混乱,上一个问题的评论者之一提到 Object.create不是太快

那么,尝试添加额外代码以偶尔利用这个可能会或可能不会比“旧”执行此操作的方式慢的 ECMA 5 功能有什么好处?

0 投票
1 回答
2627 浏览

javascript - object.create 在 JavaScript 中是如何工作的?

如果我错了,请告诉我:

原型是一个普通的对象。当一个对象继承一个原型时,它不只是复制原型的属性,对象存储了对原型的引用。

在 Firefox 中,我可以这样做:

我可以使用该__proto__属性手动设置对原型对象的引用。

我也可以使用Object.create

究竟在Object.create做什么?变量 food 是分配了对原型 more_food 的引用,还是 Object.create 只是返回了对象 more_food 的副本?如果Object.create只是复制,那么如果变量 food 没有引用 more_food,原型链如何工作?

0 投票
1 回答
329 浏览

javascript - Object.create 和继承

以下示例中生成的对象之间有什么区别:

我想oConstr并且oConstr2将在EventEmitter构造函数中设置任何属性,但是还有其他有意义的区别吗?

0 投票
2 回答
2983 浏览

javascript - Object.create 和原型链的 Instanceof 等效项

考虑这样一个带有原型链的对象:

如果 C 在其原型链中有 A,如何检查运行时?

instanceof不适合,因为它旨在与构造函数一起使用,我在这里没有使用。