首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >非实例安全的stampit.js‘safe’对象

非实例安全的stampit.js‘safe’对象
EN

Stack Overflow用户
提问于 2015-01-14 10:00:43
回答 1查看 462关注 0票数 1

你好,JavaScripters同伴。

最近,我开始使用stampit.js库来研究JavaScript中的不同继承方法。

我的问题是关于我的state对象(在我的示例中有两个),每个状态对象都被分配了一个不同的值(" first“和" second "),但是我的第一个状态对象似乎想要从我的第二个状态对象中复制值,据我所知,这不是我应该从stampit.js期望的行为。我的状态对象在通过stamp.create()时不应该是唯一的吗?

以下是我的例子:

代码语言:javascript
复制
var stamp = require('stampit')();
var state = { x: { y : null } };

state.x.y = "first";
var example1 = stamp.create(state);
state.x.y = "second";
var example2 = stamp.create(state);

// These are the same, but shouldn't they be different?
console.log(example1.a.b); // prints "second" 
console.log(example2.a.b); // prints "second"

我在这里错过了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-14 10:12:00

在撰写本文时,stampit.js库中有一个bug。

您可以在项目的github帐户上看到问题首先是在这里打开(和关闭),然后是在这里重新打开

在我们所说的过程中,他们似乎正在修复这个问题,但是您是对的,您应该为两个不同的示例对象获取两个不同的状态值,因为state应该是“实例安全”。

表示您的预期行为的库作者的引用:

状态原型在实例创建时被深度复制,这意味着如果您创建一个实例,然后更改状态原型,然后创建一个新实例,则新实例将具有与第一个实例不同的状态。 这是故意的。

所以坚持住!这个应该很快就能修好了!

代码语言:javascript
复制

更新(2015年1月15日): You can 在这里跟踪2.0分支的进展,声称正在解决这些问题。下面是项目维护者之一(来源)的引文:

将在2.0版中使用#43进行修复。见分支0

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27940192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档