您好,登錄后才能下訂單哦!
使用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é)果:
在非嚴(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é)果:
跟不可擴(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是一種動態(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)知識。
免責(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)容。