stampit.js“状态”对象不是实例安全的
stampit.js `state` objects not instance-safe
你好JavaScripter。
我最近开始弄乱 stampit.js 库,作为研究 JavaScript 中不同继承方法的一种方式。
我的问题是关于我的state
对象(在我的示例中有两个),每个状态对象都被分配了一个不同的值("第一"和"第二"),但我的第一个状态对象似乎想从我的第二个状态对象复制值,据我所知,这不是我应该从 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"
那么我在这里错过了什么?
在撰写本文时,stampit.js库中有一个错误。
您可以在项目的 github 帐户上看到,该问题首先在此处打开(和关闭),然后在此处再次重新打开。
在我们说话的时候,似乎他们正在努力解决这个问题,但你是对的,你应该为两个不同的示例对象获取两个不同的状态值,因为状态应该是"实例安全的"。
来自库作者的引述,代表您的预期行为:
状态原型在创建实例时进行深度复制,这 意味着如果创建一个实例,则更改状态原型, 然后创建一个新实例,新实例将具有不同的状态 比第一个实例。
这是设计使然。
所以抓紧!这应该很快就会修复!
~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~更新(2015 年 1 月 15 日):您可以在此处关注 2.0 分支的进度,该分支声称正在解决这些问题。以下是一位项目维护者的引述(来源):
将修复 排名 #43 in 版本 2.0. 请参阅分支v2_0。
相关文章:
- ES6构造函数返回基类的实例
- KnockoutJS-组件-多个实例
- 如何在读取XLS/XLSX本地文件时,使用IE的javascript代码启用未标记为安全的ActiveX控件
- 为什么无法在TypeScript中导出类实例
- 使用javascript存储变量的最安全方式
- 如何在GoogleWeb工具包(GWT)中从JSNI调用接口(实例化)
- fluxxor向一个flux实例添加一组以上的操作
- 使用jQuery获取Dropzone实例/对象
- "实例范围”;TypeScript类的getter/setter
- 如何在速度模板中获取LiferayPortlet实例id
- 同一项怎么可能在一个实例中未定义,却在另一个实例上定义
- 是否存在React Native“;WEB代码安全防护”;
- 内容安全策略:页面's设置阻止加载资源
- 实例创建(JS)
- 显示模块模式在Knockout中设置模型的新实例
- 如何获取单选按钮的多个实例的选定单选按钮值
- 当同一浏览器的两个实例浏览时,Javascript页面如何具有唯一的ID
- 在哪里可以找到RXUI Javascript'时间飞逝'实例
- spine.js在启动时填充模型实例
- stampit.js“状态”对象不是实例安全的