在javascript中,如何冻结对象的特定属性?

时间:2015-09-29 02:28:17

标签: javascript

Object.defineProperty(window, "customVideo", {
  value: {
    ovaURL: "can-not-change",
    pvaURL: "can-not-change"
  }
});
Object.freeze(window.customVideo.ovaURL);
Object.freeze(window.customVideo.pvaURL);

//but when i run:
customVideo['ovaURL'] = "i-can-change-you-huhhuh";
customVideo['pvaURL'] = "i-can-change-you-huhhuh";

//and console.log
console.log(customVideo.ovaURL);
//so result is : "i-can-change-you-huhhuh" 
//not what i want is "can-not-change"

我已经使用freeze函数阻止用户更改window.customVideo.ovaURL的值,可能他们此时没有工作,或者我在这里误解了一些东西。 :((

但是当freeze用于customVideo之后Object.freeze(window.customVideo); 他会冻结customVideo太好了,但他不允许我将customVideo.newProp = 2添加到customVideo

我只想冻结customVideo ovaURL and pvaURL的两个属性,我该怎么办?

为什么我需要这个?

我正在编写chrome扩展,我需要设置默认并冻结变量,将来,他的名字将由目标页面的脚本创建。这项工作将允许我在加载到用户可见时更好地控制页面。

0 个答案:

没有答案