9得票2回答
Object.create与直接原型继承的区别

我一直在尝试使用 EcmaScript 5 规范中的 Object.create,并尝试创建一种多重继承类型结构。 假设我有几个函数:a、b 和 c。只需处理原型,就可以这样做: function a () {} a.prototype = { fnA = function () ...

19得票1回答
JavaScript中的object.create如何工作?

告诉我是否正确: 原型是一个普通对象。当一个对象继承自原型时,它不仅仅只是复制原型的属性,对象存储了对原型的引用。 在 Firefox 中,我可以这样做:var food = {fruit:"apple"}; var more_food = {vegetable:"celery"}; foo...

8得票4回答
使用Object.create和命名构造函数实现原型式面向对象编程

我从Python和Smalltalk的背景中转向Javascript,欣赏语言中Self和Lisp的传承。在ECMAScript5中,我想尝试使用原型式面向对象编程而不使用new运算符。 约束条件: 可选使用new运算符创建类 实例必须正确继承原型链以满足instanceof 为WebI...

7得票1回答
Object.create在Chrome中是否会改变原型对象的控制台输出?

今天我在玩耍时发现Chrome控制台中的一些对象显示为“Object”而不是构造函数名称,这很奇怪,因此我将其简化为以下代码: function Baz() { this.baz = true; } var b = new Baz(); var c = Object.create(b...

17得票4回答
为什么Object.create比构造函数慢这么多?

背景 我在维护的一个项目中,我们广泛地使用了空原型对象作为贫民版(仅支持字符串键)Map的替代品,因为许多老旧的、ES6之前的浏览器不支持它们。 基本上,要动态创建一个空原型对象,可以使用以下代码:var foo = Object.create(null); 这确保新对象没有继承的属性,比...

13得票3回答
JavaScript Object.create -- 继承嵌套属性

我发现了一个关于 Douglas Crockford 的 Object.create 方法的奇怪现象,希望有人能够解释一下: 如果我使用对象文本表示法创建一个名为“person”的对象,然后使用 Object.create 创建一个新对象 - 名为“anotherPerson”的对象,它继承...

7得票2回答
使用Object.create时传递参数与使用new时的区别

这个问题不是使用 "Object.create" 代替 "new"的重复。相关帖子并未专注于在使用 Object.create 时正确传递参数。 我想知道如何使用Object.create来初始化对象,而不是使用new。以下是我的代码: function Human(eyes) { ...

15得票7回答
JavaScript中使用Object.create()实现继承?

如何使用Object.create()进行继承?我尝试了以下代码,但都没有成功:var B = function() {}; var A = function() {}; A = Object.create(B); A.prototype.C = function() {}; 而且var B ...

25得票2回答
Object.create和原型链的Instanceof等效实现

考虑下面这个原型链的对象:var A = {}; var B = Object.create(A); var C = Object.create(B); 如何在运行时检查C是否在其原型链中具有A?instanceof不适用,因为它设计用于处理构造函数,而我此处并未使用构造函数。

10得票1回答
使用Object.create的优势

与这个问题类似,但又有所不同。下面的代码来自于《JavaScript权威指南》。作者基本上定义了一个继承方法,如果Object.create存在,则使用它,否则使用常规的JavaScript构造函数和原型交换来实现继承。 我的问题是,由于Object.create在许多常见浏览器(如IE)中...