使对象保持静态,并且仍然指定和更改它
Make object static and still assign and change it
我想使用一个静态对象,将其分配给一个新变量并对其进行更改。
var MY_STATIC: {message: "I am static"};
var test = MY_STATIC;
test.message = "I am not static enough";
console.log(MY_STATIC.messsage); ==> I am not static enough
但我希望MY_STATIC.消息仍然是"我是静态的",以便以后再次使用。如何在分配和更改时使对象保持不变
您可能需要使用Object.create()
来创建MY_STATIC
对象的新实例:
var MY_STATIC = {message: "I am static"};
var test = Object.create(MY_STATIC);
test.message = "I am not static enough";
console.log(test.message);
console.log(MY_STATIC.message);
在兼容ES5的引擎上,您可以"冻结"对象:
var static = Object.freeze({message: "I am static"});
snippet.log(static.message); // "I am static"
static.message = "Not!";
snippet.log(static.message); // "I am static"
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
通过设置obj1=obj2
,您通过引用传递它们。这里需要的是通过值传递它们,因此使用以下代码
var MY_STATIC = {message:"Static I am"};
function Clone(x) {
for(prop in x)
this[prop] = (typeof(x[prop]) == 'object')?
new Clone(x[prop]) : x[prop];
}
(function(x){
var test = new Clone(x);
test.message = 'Not static';
})(MY_STATIC)
相关文章:
- Javascript,从静态函数中打印全局对象
- 使对象保持静态,并且仍然指定和更改它
- 如何将静态数组分配给 Dojo 中的对象
- 如何使用 dedeclare 定义 dojo 静态变量或静态对象
- 何时有时将对象类型定义为将实例绑定方法镜像为构造函数上的静态实用程序函数很有用
- 三.js - 保持对象相对于相机的位置静态
- 在javascript中美化字符串化对象以在静态HTML页面中提供服务
- 无法访问 JavaScript 对象中的静态变量,该对象对另一个 JavaScript 对象进行子类化
- 在全局对象中定义的类中的 Javascript 静态方法
- 如何实现滑块并替换覆盖对象的静态图像
- 将静态对象转换为动态对象
- JS对象在访问静态时会丢失值(非常奇怪)
- 将hasOwnProperty作为调用方法的直接静态引用进行调用的好处,而不是将其作为对象实例方法进行调用
- JavaScript静态对象创建方法的差异
- 自动递增对象id JS构造函数(静态方法和变量)
- 为什么这个对象声明在node.js中有效,以及如何声明静态变量
- 何时组合通用功能?-带有初始化的公共静态对象
- JavaScript对象返回静态方法和自己作为方法
- 如何访问静态对象的父成员
- 如何静态声明一个属性名(键)包含破折号的Javascript对象实例(关联数组)?