日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Javascript设置对象属性为只读

發布時間:2023/12/10 java 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Javascript设置对象属性为只读 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有時為了保護某些屬性,讓其無法被更改,我們會把他們設置為常量。

在某些語言里面,也許會用const來實現這樣的功能。本文講述如何在Javascript中實現這樣的功能。

?

方法一:

var myObject = {get readOnlyProperty() { return 1024; } };alert(myObject.readOnlyProperty); // 1024 myObject.readOnlyProperty = 5; // 可以設置,但不管用 alert(myObject.readOnlyProperty); // 1024

如果你已經定義好了一個Object,那么你可以這么做

var myObject = {}; myObject.__defineGetter__("readOnlyProperty", function() { return 1024; });

上面的這兩段代碼兼容Firefox,Opera 9.5+, Safari 3+和Chrom,不過杯具的是,這些代碼是不兼容IE的。

?

方法二:

對于支持ECMAScript 5的Javascript解釋器,你可以使用Object.defineProperty方法來實現這樣的功能。

在松散模式,Javascript解釋器會直接忽略掉屬性的寫入。在嚴格模式(strict mode)下,解釋器會拋出一個錯誤。

var obj = {}; Object.defineProperty( obj, "<屬性名>", {value: "<屬性值>",writable: false,enumerable: true,configurable: true });

不過很明顯,這代碼是無法在那些不支持ECMAScript 5的瀏覽器(當然包括IE)上執行的。

?

方法三:

使用模塊模式去模擬出這樣的功能,不廢話,直接看代碼

var CONFIG = (function() {var private = {'MY_CONST': '1','ANOTHER_CONST': '2'};
  
return {get: function(name) { return private[name]; } //函數返回一個對象,有get方法,接收name參數,返回內部私有變量的值}; })();alert(CONFIG.get('MY_CONST')); // 1 CONFIG.MY_CONST = '2'; alert(CONFIG.get('MY_CONST')); // 1 CONFIG.private.MY_CONST = '2'; // 錯誤,沒有private屬性 alert(CONFIG.get('MY_CONST')); // 1

這個方法兼容目前全部瀏覽器(包括IE),只是讀屬性的時候需要使用get。

?

方法四:

在大部分情況下,你并不需要完全控制變量不可寫。在業內有個約定,就是使用全大寫的字母來表示常量(只讀變量)。這是最簡單,最好的方法。

var MY_CONSTANT = "some-value";

這樣寫,來告訴自己,這個變量不可以改變!!!

?

總結:

我個人比較推薦最后一種做法。簡單明了,約定?也是解決很多問題的最好方法。

其次是方法三,模塊模式是比較好的模式,而且這種方法兼容性良好,因為我想大部分人用Javascript都是需要在IE上運行的。

第二種方法是標準方法,如果以后Javascript解釋器都支持ECMAScript 5的話。

?

本文參考:stackoverflow.com

轉載于:https://www.cnblogs.com/season-huang/p/seasonhuang.html

總結

以上是生活随笔為你收集整理的Javascript设置对象属性为只读的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。