最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript創(chuàng)建防篡改對象的方法分析

 更新時間:2018年12月30日 14:34:02   作者:deniro_li  
這篇文章主要介紹了JavaScript創(chuàng)建防篡改對象的方法,結(jié)合具體實例形式分析了javascript基于不可擴展對象、密封的對象和凍結(jié)的對象實現(xiàn)防篡改對象的相關(guān)操作技巧,需要的朋友可以參考下

本文實例講述了JavaScript創(chuàng)建防篡改對象的方法。分享給大家供大家參考,具體如下:

之前的 JavaScript,開發(fā)人員可能會意外修改了別人的代碼,甚至重寫原生對象!現(xiàn)在,在 ECMAScript 5 中可以定義防篡改對象啦O(∩_∩)O~

不過,一旦把對象定義為防篡改之后,就無法撤銷了哦。

1 不可擴展對象

默認情況下,所有的對象都是可擴展的,即可以隨意地添加屬性和方法?,F(xiàn)在,使用 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>

運行結(jié)果:

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

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

2 密封的對象

密封的對象不可以擴展,而且已有的成員的[[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>

運行結(jié)果:

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

3 凍結(jié)的對象

對象的最嚴格的防篡改級別是凍結(jié)!凍結(jié)的對象既不能擴展,又是密封的,而且對象的數(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>

運行結(jié)果:

對于 JavaScript 第三方庫的而言,凍結(jié)對象很有用,因為這些庫最怕被人意外修改了呀O(∩_∩)O~

感興趣的朋友還可以使用本站在線HTML/CSS/JavaScript代碼運行工具http://tools.jb51.net/code/HtmlJsRun測試上述代碼運行結(jié)果。

更多關(guān)于JavaScript相關(guān)內(nèi)容還可查看本站專題:《javascript面向?qū)ο笕腴T教程》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學運算用法總結(jié)

希望本文所述對大家JavaScript程序設(shè)計有所幫助。

相關(guān)文章

  • javascript 緩沖效果實現(xiàn)代碼 推薦

    javascript 緩沖效果實現(xiàn)代碼 推薦

    緩沖效果就是實現(xiàn)一個頁面的由慢到快或由快到慢的過程。
    2009-09-09
  • javascript刪除Table中的一行的腳本代碼

    javascript刪除Table中的一行的腳本代碼

    用js實現(xiàn)的刪除table中一行數(shù)據(jù)的代碼
    2008-06-06
  • 微信小程序自定義tabbar欄實現(xiàn)過程講解

    微信小程序自定義tabbar欄實現(xiàn)過程講解

    tabBar相對而言用的還是比較多的,但是用起來并沒有難,下面這篇文章主要給大家介紹了關(guān)于微信小程序全局配置之tabBar的相關(guān)資料,文中通過圖文以及示例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • innerText和textContent對比及使用介紹

    innerText和textContent對比及使用介紹

    innerText使用過程中遇到了FireFox的兼容問題FireFox不支持innerText方法但是有個類似的方法,叫textContent,類似innerText,都是用來獲?。ㄔO(shè)置)元素中text的方法,感興趣的朋友可以參考下
    2013-02-02
  • JavaScript 實現(xiàn)模態(tài)對話框 源代碼大全

    JavaScript 實現(xiàn)模態(tài)對話框 源代碼大全

    對話框在Windows應(yīng)用程序中使用非常普遍,許多應(yīng)用程序的設(shè)定,與用戶交互需要通過對話框來進行,因此對話框是Windows應(yīng)用程序中最重要的界面元素之一,是與用戶交互的重要手段。
    2009-05-05
  • JS實現(xiàn)簡單獲取最近7天和最近3天日期的方法

    JS實現(xiàn)簡單獲取最近7天和最近3天日期的方法

    這篇文章主要介紹了JS實現(xiàn)簡單獲取最近7天和最近3天日期的方法,涉及javascript針對日期與時間的相關(guān)數(shù)值運算與轉(zhuǎn)換操作技巧,需要的朋友可以參考下
    2018-04-04
  • 淺談js的ajax的異步和同步請求的問題

    淺談js的ajax的異步和同步請求的問題

    下面小編就為大家?guī)硪黄獪\談js的ajax的異步和同步請求的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • 支付寶小程序從手動埋點到自動埋點的實現(xiàn)過程

    支付寶小程序從手動埋點到自動埋點的實現(xiàn)過程

    埋點的意思是在你想要的數(shù)據(jù)節(jié)點出進行設(shè)置,可以方便進行采集,下面這篇文章主要給大家介紹了關(guān)于支付寶小程序從手動埋點到自動埋點的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • JS函數(shù)的返回值如何使用

    JS函數(shù)的返回值如何使用

    函數(shù)是一塊js代碼塊,被定義一次但可以執(zhí)行和調(diào)用多次,js中的函數(shù)也是對象可以像其他對象那樣操作和執(zhí)行,js函數(shù)也被稱為函數(shù)對象,本文給大家介紹JS函數(shù)的返回值如何使用,感興趣的朋友跟隨小編一起看看吧
    2024-02-02
  • js中substring和substr的定義和用法

    js中substring和substr的定義和用法

    這篇文章主要介紹了js中substring和substr的定義和用法,需要的朋友可以參考下
    2014-05-05

最新評論

锡林郭勒盟| 洛隆县| 吐鲁番市| 蕲春县| 从江县| 皮山县| 铜鼓县| 宜春市| 平陆县| 基隆市| 株洲市| 霞浦县| 宁乡县| 沂源县| 东阿县| 乳源| 东方市| 布尔津县| 绍兴县| 宜兴市| 牡丹江市| 靖远县| 明水县| 根河市| 霸州市| 大关县| 东城区| 五原县| 灵宝市| 渝中区| 东兰县| 陇川县| 南溪县| 泸州市| 镇坪县| 正宁县| 安福县| 泾源县| 靖州| 桐城市| 四川省|