簡體   English   中英

JavaScript原型上的Object.freeze()有什么問題嗎?

[英]Anything wrong with Object.freeze() on a JavaScript prototype?

在JavaScript中構造函數的原型上調用Object.freeze有什么問題嗎?

我只是想,因為原型是在所有實例之間共享的,也許我可以確保沒有人通過凍結它來覆蓋原型中的任何東西,因為在原型上覆蓋某些內容會影響每個實例。 例如,如下所示:

function MyConstructor() {
  // Stuff
}

MyConstructor.prototype = {
  method1() {
    // more stuff
  },
  method2() {
    // even more stuff
  },
  someArray: ['some', 'values'],
  someValue: 'value'
}

Object.freeze(MyConstructor.prototype);

如果凍結原型,您還會凍結擴展它的對象,因此它們將無法覆蓋原型中定義的那些屬性

這個要點是一個展示問題的測試

我想你真正想要的是

MyConstructor.prototype.someArray = Object.freeze(['some', 'values']);

凍結原型對象本身幾乎沒有意義,沒有什么能夠意外地覆蓋原型屬性。 然而,使繼承 不可變可能是有用的,因為偶然突變發生得更容易並導致相同的不利影響。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM