您好,登錄后才能下訂單哦!
使用JavaScript怎么創建防篡改對象?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
1 不可擴展對象
默認情況下,所有的對象都是可擴展的,即可以隨意地添加屬性和方法。現在,使用 Object.preventExtensions(person)
方法后,對象就不可以擴展咯:
<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>
運行結果:
在非嚴格模式下,為對象添加新成員會靜默失敗;而在嚴格模式下,會拋出錯誤。
雖然對象不能添加新成員,但仍然可以修改和刪除已有的成員。而 Object.isExtensible()
可以確定對象是否可擴展。
2 密封的對象
密封的對象不可以擴展,而且已有的成員的[[Configurable]]的特性也被設置為 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>
運行結果:
跟不可擴展對象相似,在非嚴格模式下,刪除對象的已有成員會靜默失敗;而在嚴格模式下,會拋出錯誤。
3 凍結的對象
對象的最嚴格的防篡改級別是凍結!凍結的對象既不能擴展,又是密封的,而且對象的數據屬性[[Writable]]被設置為 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>
運行結果:
javascript是一種動態類型、弱類型的語言,基于對象和事件驅動并具有相對安全性并廣泛用于客戶端網頁開發的腳本語言,同時也是一種廣泛用于客戶端Web開發的腳本語言。它主要用來給HTML網頁添加動態功能,現在JavaScript也可被用于網絡服務器,如Node.js。
關于使用JavaScript怎么創建防篡改對象問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。