问题标签 [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.
javascript - 原型继承:你能链接 Object.create 吗?
我是原型继承的新手,所以我试图理解“正确”的方式。我以为我可以这样做:
但相反,我得到“ tbase.BicData.prototype is undefined ”
在 Java 中,我想要的是将Tdata作为样板“接口”,将BicData作为该接口的实现,然后从中实例化对象。
我哪里错了?
javascript - 使用“Object.create”而不是“new”
Javascript 1.9.3 / ECMAScript 5 引入Object.create
了 Douglas Crockford 等人长期以来一直在提倡的。如何new
在下面的代码中替换为Object.create
?
(假设MY_GLOBAL.nextId
存在)。
我能想到的最好的是:
似乎没有任何优势,所以我想我没有得到它。我可能太新古典主义了。我应该如何使用Object.create
来创建用户'bob'?
javascript - 使用 Object.create() 进行 JavaScript 继承?
如何使用 Object.create() 继承?我尝试了这些,但没有一个有效:
和
和
没有任何效果。我应该如何使用这个新的 Object.create() 函数?
javascript - JavaScript Object.create——继承嵌套属性
我遇到了 Douglas Crockfords Object.create 方法的一个特点,我希望有人能解释一下:
如果我创建一个对象——比如“person”——使用对象文字表示法,然后使用 Object.create 创建一个新对象——比如“anotherPerson”——它继承了初始“person”对象的方法和属性。
如果我然后更改第二个对象的名称值 - 'anotherPerson' - 它也会更改初始'person' 对象的名称值。
这仅在属性嵌套时发生,这段代码应该让您了解我的意思:
如果我要在不嵌套的情况下存储名称值,那么这种奇怪的行为就不会发生——例如
当使用带有构造函数和“new”关键字的经典继承风格时,似乎不会出现这种嵌套问题。
如果有人能够解释为什么会发生这种情况,我将不胜感激!?
javascript - Object.create 和内置对象
我正在尝试将功能(新方法)添加到内置对象(在我的例子中,类型为 CanvasRenderingContext2D)。
第一种方法是将方法添加到原型中,它可以工作,但我不想修改内置对象。
我正在考虑使用 Object.create(来自 ES5)来扩展对象,例如Object.create(context, <my_method_descriptors>)
,但是在访问扩展对象的属性/调用方法时,它在某些浏览器上失败。例如,这个片段
var canvas = document.getElementById("mainCanvas");
var context = canvas.getContext('2d');
var exContext = Object.create(context);
try {
exContext.fillStyle = 'red';
exContext.fillRect(0, 0, 120, 120);
} catch (e) {
alert(e);
}
在 IE9 Beta 和 Safari 5 上会失败,但在 Firefox 4 Beta 和 Chrome 7 上会成功。
另一个例子:Object.create(new Date()).getDate()
在所有浏览器中都失败。
有什么想法吗?
javascript - 了解 Object.create() 和 new SomeFunction() 之间的区别
我最近偶然发现了Object.create()
JavaScript 中的方法,并试图推断它与使用 创建对象的新实例有何不同new SomeFunction()
,以及何时需要使用其中的一个。
考虑以下示例:
请注意,在两种情况下都观察到相同的行为。在我看来,这两种情况之间的主要区别是:
- 中使用的对象
Object.create()
实际上形成了新对象的原型,而在new Function()
声明的属性/函数中并不形成原型。 - 您不能
Object.create()
像使用函数式语法那样使用语法创建闭包。考虑到 JavaScript 的词法(vs 块)类型范围,这是合乎逻辑的。
上述说法是否正确?我错过了什么吗?您什么时候会使用其中一种?
编辑:链接到上述代码示例的 jsfiddle 版本:http: //jsfiddle.net/rZfYL/
javascript - 如何使用 ES5 Object.create 和对象文字语法模拟构造函数?
假设我有一个这样的对象:
问题:我想用正确的 src 初始化那个精灵。但是,当我使用以下创建技术时:
我没有要设置的构造函数方法(又名 init 函数)sprite.src = 'cool.png';
我的问题:
如果我使用对象字面量技术,并且Object.create()
,我什么时候真正初始化我的一些内部状态(如 的示例new Image()
)
我的解决方案:
但是,我不知道这是否是一个很好的模式。如果有办法,我想用“JavaScript 方式”来做到这一点。:)
谢谢!
javascript - Javascript Object.create 在 Firefox 中不起作用
我总是在 Firefox (3.6.14) 中遇到以下异常:
这很令人困惑,因为我很确定它是一个函数,并且代码在 Chrome 上按预期工作。
负责此行为的代码行如下:
如果有人想查看所有代码,它来自扑克库 gaga.js:https ://github.com/SlexAxton/gaga.js
也许有人知道如何让它在 Firefox 中运行?
javascript - 模块中的 Object.create 和私有函数
这是 ES5 的 Object.create 的独立实现:
及其使用示例:
我注意到animal
在尝试调用私有函数时,内部变得有点混乱,例如:
有没有更简洁的方法来遵循这种模式?特别是,消除对privFunc.call(this, arg)
.
另一种同样丑陋的方式是: