Javascript 使对象保持静态,但仍指定和更改它
我想使用一个静态对象,将其分配给一个新变量并对其进行更改Javascript 使对象保持静态,但仍指定和更改它,javascript,object,Javascript,Object,我想使用一个静态对象,将其分配给一个新变量并对其进行更改 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 但是我希望我的_STATIC.message仍然是“I am STATIC”,以便以后再次使用它。
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
但是我希望我的_STATIC.message仍然是“I am STATIC”,以便以后再次使用它。
如何使对象保持不变?尽管我分配并更改了对象您可能希望使用
对象。create()
来创建我的静态对象的新实例:
var MY_STATIC={message:“我是静态的”};
var test=Object.create(MY_STATIC);
test.message=“我不够静态”;
console.log(test.message);
日志(MY_STATIC.message)代码>在兼容ES5的引擎上,您可以:
var static=Object.freeze({message:“我是静态的”});
snippet.log(static.message);//“我是静态的”
static.message=“不是!”;
snippet.log(static.message);//“我是静态的”
通过设置obj1=obj2
可以通过ref传递它们。这里需要的是通过值传递它们,所以使用此代码
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)
您是否尝试过将其声明为var MY_STATIC:{var message:“我是静态的”}
您可以使用defineProperty()
->将对象属性设置为锁定且不可写,您指的是静态还是静态const@ProtoBassi你知道吗var test=MYSTATIC代码>应该是var test=MY\u STATIC
并且名称中缺少“\u1”?对象属性很有趣,但由于我有几个对象和几个键,这使得它有点不可读。另外,对象已经是对象的一部分,我需要用另一种方法初始化对象。还是很有道理。