问题标签 [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 投票
1 回答
823 浏览

javascript - 在通过 Object.create 创建的对象上设置原型

给定以下代码,我在弄清楚如何设置原型链时遇到了一些麻烦。

具体来说,这一行让我在 create 方法中感到困惑:

我了解 create 方法如何创建一个原型指向 Model 的新对象,但倒数第二行似乎用新对象 (Model.prototype) 覆盖了该原型。但是,看起来原始原型仍然完好无损,因为即使在创建新对象后我也可以向 Model 添加方法,并且新对象仍然可以访问它。

有人可以对实际发生的事情有所了解吗?

编辑- 我应该指出这段代码来自O'reilly的Javascript Web Applications

0 投票
2 回答
219 浏览

javascript - Object.create 和原型

当我使用 object.create 像这样创建一个新对象时,

我的印象是 o 成为 p 的原型并继承了它的所有方法。

那为什么,当我尝试

输出未定义?o 定义明确!!

谢谢你

0 投票
3 回答
193 浏览

javascript - javascript - Object.create 解释

我对以下规范的 object.create 方法有疑问:

在上述代码的第 3 行,我们将 F 对象的原型属性设置为 o 参数的原型。

我会认为这意味着 o 和 F 都指向同一个原型,因此指向同一个成员集。

但是代码随后会在 props 循环中复制 prop 中的所有成员。

如果我们手动复制所有成员,那么在第 3 行设置原型有什么意义?

0 投票
1 回答
102 浏览

javascript - Object.create 是否支持所谓的类方法?

当我使用构造函数创建对象时,例如:

我可以将作为函数的属性添加到构造函数,其作用类似于(静态)类方法。Object.create 似乎不支持这一点。那正确吗?Object.create 创建的所有对象的构造函数属性似乎是同一个函数。

提前致谢。

0 投票
3 回答
168 浏览

javascript - Object.create 和引用属性

您如何处理在其子代之间共享原型的引用属性的问题?是否有任何众所周知的模式(除了在构造函数中重新定义属性)来解决这个问题?这到底是个问题,还是我缺少关于原型继承的一些东西?

例子:


更新:

在研究了原型继承之后,在我看来,这种范式中“自然”的编程方式是扩展对象,而不是在将它们用作“类”的意义上过分依赖构造函数。我在博客上看到的示例(它似乎也与 Douglas Crockford 的一致Object.create)或多或少是这样的:

构造函数是在新实例上复制或创建新数组的唯一方法吗?这是Object.create“不完整”的模​​式吗?

感谢您的回答!

0 投票
1 回答
119 浏览

javascript - Javascript Object.Create 对对象的复制引用

我有以下代码

我有从 ViewModel 继承的对象,它们都具有更新功能。我有一个数组,我正在使用来自 json 对象(初始)的新内容进行更新。有时 Json 对象比我正在更新的现有数组长,所以我想添加相同类型的对象。我正在使用 Object.create(this[key][ittr -1]) 指向数组中的最后一个对象,并尝试从中实例化一个新对象。问题是,每次迭代,它都不会创建新对象,而只是旧对象的副本。知道我怎么能阻止它吗?

我也试过jquery

我试过把 x 变成一个数组

每当我调用 x.update 时,它​​都会更改数组中已设置为 x 的每个值。所以当我调用 Object.create 时,我从来没有真正创建一个新对象

0 投票
4 回答
44053 浏览

javascript - JavaScript 继承:Object.create 与 new

在 JavaScript 中,这两个示例有什么区别:

先决条件:

使用 Object.create 的继承示例 A:

使用 new 关键字的继承示例 B

这两个例子似乎做同样的事情。你什么时候会选择一个而不是另一个?

另一个问题:考虑下面链接(第 15 行)中的代码,其中对函数自己的构造函数的引用存储在原型中。为什么这很有用?

https://github.com/mrdoob/three.js/blob/master/src/loaders/ImageLoader.js

摘录(如果您不想打开链接):

0 投票
2 回答
2570 浏览

google-apps-script - 在 Chromebook 上的 Chrome 中使用 [google-apps-script] 脚本文件中的 Object.create

我一直在尝试在气体脚本文件中使用 Object.create。Object.create 已定义,但似乎没有返回有用的对象。

此代码工作正常:

因此,尽管 Object.create 已定义,但它似乎并没有按预期工作。这是一个错误还是我错过了什么?

0 投票
2 回答
1363 浏览

javascript - 使用 Object.Create 向 JavaScript 对象添加函数

我正在尝试在 JavaScript 中使用 Object.Create。我目前有以下代码:

我试图为 getMake 向 van 添加一个函数,但出现错误:

TypeError:当我调用时,对象# 的属性“getMake”不是函数:

van.getMake();

这可能吗?你怎么做呢?

0 投票
2 回答
6667 浏览

javascript - 使用 Object.create 而不是 new 时传递参数

这个问题不是重复使用 "Object.create" 而不是 "new"。有问题的线程在使用时不专注于正确传递参数Object.create


我很好奇我将如何使用Object.create而不是new. 到目前为止,这是我的代码:

正如你在上面看到的,Male.prototype = new Human(true);创建了一个新的对象。运行该hasEyes()函数时,这将按预期记录为真。

所以,我的问题是.. 使用Object.create我将如何以传递true参数的方式执行此操作?