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”?对象属性很有趣,但由于我有几个对象和几个键,这使得它有点不可读。另外,对象已经是对象的一部分,我需要用另一种方法初始化对象。还是很有道理。