溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

使用JavaScript怎么創(chuàng)建防篡改對象

發(fā)布時間:2021-05-20 16:44:53 來源:億速云 閱讀:126 作者:Leah 欄目:web開發(fā)

使用JavaScript怎么創(chuàng)建防篡改對象?針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

1 不可擴(kuò)展對象

默認(rèn)情況下,所有的對象都是可擴(kuò)展的,即可以隨意地添加屬性和方法?,F(xiàn)在,使用 Object.preventExtensions(person) 方法后,對象就不可以擴(kuò)展咯:

<script type="text/javascript">
  var person = {name: "deniro"};
  //  person.age = 29;
  //  console.log(person.age);
  console.log(Object.isExtensible(person));//true
  Object.preventExtensions(person);
  person.age = 15;
  console.log(person.age);//undefined
  console.log(Object.isExtensible(person));//false
</script>

運(yùn)行結(jié)果:

使用JavaScript怎么創(chuàng)建防篡改對象

在非嚴(yán)格模式下,為對象添加新成員會靜默失??;而在嚴(yán)格模式下,會拋出錯誤。

雖然對象不能添加新成員,但仍然可以修改和刪除已有的成員。而 Object.isExtensible() 可以確定對象是否可擴(kuò)展。

2 密封的對象

密封的對象不可以擴(kuò)展,而且已有的成員的[[Configurable]]的特性也被設(shè)置為 false,這意味著不能刪除這個對象的屬性和方法咯,但屬性的值可以修改:

<script type="text/javascript">
  var person = {name: "deniro"};
  console.log(Object.isExtensible(person));//true
  console.log(Object.isSealed(person));//false
  Object.seal(person);//密封對象
  console.log(Object.isExtensible(person));//false
  console.log(Object.isSealed(person));//true
  person.age = 29;
  console.log(person.age);//undefined
  delete person.name;
  console.log(person.name);//deniro
</script>

運(yùn)行結(jié)果:

使用JavaScript怎么創(chuàng)建防篡改對象

跟不可擴(kuò)展對象相似,在非嚴(yán)格模式下,刪除對象的已有成員會靜默失敗;而在嚴(yán)格模式下,會拋出錯誤。

3 凍結(jié)的對象

對象的最嚴(yán)格的防篡改級別是凍結(jié)!凍結(jié)的對象既不能擴(kuò)展,又是密封的,而且對象的數(shù)據(jù)屬性[[Writable]]被設(shè)置為 false,即屬性值無法被修改:

<script type="text/javascript">
  var person = {name: "deniro"};
  console.log(Object.isExtensible(person));//true
  console.log(Object.isSealed(person));//false
  console.log(Object.isFrozen(person));//false
  Object.freeze(person);
  console.log(Object.isExtensible(person));//false
  console.log(Object.isSealed(person));//true
  console.log(Object.isFrozen(person));//trueo
  person.age = 29;
  console.log(person.age);//undefined
  delete person.name;
  console.log(person.name);//deniro
  person.name = "lily";
  console.log(person.name);//deniro
</script>

運(yùn)行結(jié)果:

使用JavaScript怎么創(chuàng)建防篡改對象

javascript是一種什么語言

javascript是一種動態(tài)類型、弱類型的語言,基于對象和事件驅(qū)動并具有相對安全性并廣泛用于客戶端網(wǎng)頁開發(fā)的腳本語言,同時也是一種廣泛用于客戶端Web開發(fā)的腳本語言。它主要用來給HTML網(wǎng)頁添加動態(tài)功能,現(xiàn)在JavaScript也可被用于網(wǎng)絡(luò)服務(wù)器,如Node.js。

關(guān)于使用JavaScript怎么創(chuàng)建防篡改對象問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI