你好,JavaScripters同伴。
最近,我开始使用stampit.js库来研究JavaScript中的不同继承方法。
我的问题是关于我的state对象(在我的示例中有两个),每个状态对象都被分配了一个不同的值(" first“和" second "),但是我的第一个状态对象似乎想要从我的第二个状态对象中复制值,据我所知,这不是我应该从stampit.js期望的行为。我的状态对象在通过stamp.create()时不应该是唯一的吗?
以下是我的例子:
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"我在这里错过了什么?
发布于 2015-01-14 10:12:00
在撰写本文时,stampit.js库中有一个bug。
您可以在项目的github帐户上看到问题首先是在这里打开(和关闭),然后是在这里重新打开。
在我们所说的过程中,他们似乎正在修复这个问题,但是您是对的,您应该为两个不同的示例对象获取两个不同的状态值,因为state应该是“实例安全”。
表示您的预期行为的库作者的引用:
状态原型在实例创建时被深度复制,这意味着如果您创建一个实例,然后更改状态原型,然后创建一个新实例,则新实例将具有与第一个实例不同的状态。 这是故意的。
所以坚持住!这个应该很快就能修好了!
更新(2015年1月15日): You can 在这里跟踪2.0分支的进展,声称正在解决这些问题。下面是项目维护者之一(来源)的引文:
https://stackoverflow.com/questions/27940192
复制相似问题