<font id="zqva1"></font>
<rt id="zqva1"></rt>
  • <tt id="zqva1"></tt>
    <cite id="zqva1"></cite>

    <cite id="zqva1"><noscript id="zqva1"></noscript></cite>
      <rp id="zqva1"><meter id="zqva1"></meter></rp>

        <cite id="zqva1"></cite>
          <b id="zqva1"></b>
          <rp id="zqva1"></rp>
          <cite id="zqva1"></cite>

          <rt id="zqva1"></rt>

        1. <rp id="zqva1"></rp>

          javascript不可變性是什么?

          時間:?2020-01-02閱讀:?63標簽:?js知識

          不可變性即某個變量在進行了某個操作之后,其本身沒有發生變化,比如對于字符串而言,對字符串的任何操作都會改變字符串本身的值,而是在字符串的基礎上復制出來一個然后再改變,這樣我們就說是不可變的。


          實現對象不可變性的幾種方法:

          1. 對象常量

          要使對象的某個屬性為常量(即不可修改,不可刪除,不可重新定義)

          可以按照上面講的使用Object.defineProperty方法,將屬性的屬性描述符writable,configurable都設為false

          2.禁止對象擴展

          使用Object.preventExtensions()方法讓一個對象變的不可擴展,也就是永遠不能再添加新的屬性。

          注意:不可擴展的對象,屬性可能還能夠被刪除。

          注意:Object.preventExtensions()僅阻止添加自身的屬性。但屬性仍然可以添加到對象原型。

          舉個例子:

          let person = {
              name: 'noshower'
          }
          //使得person不可擴展
          Object.preventExtensions(person);
          person.age = 22;
          console.log(person.age); // undefined  age屬性沒有被添加進來
          delete person.name;
          console.log(person.name); //undefined name屬性被刪除了

          3. 密封對象

          使用Object.seal()方法密封一個對象,這個方法實際上會在一個現有對象上調用Object.preventExtensions并把所有自身現有屬性標記為configurable:false

          密封之后,這個對象不能添加屬性,不能重新配置或者刪除任何現有屬性。

          不會影響從原型鏈上繼承的屬性。但__proto__ 屬性的值也會不能修改。

          舉個例子:

          let person = {
              name: 'noshower'
          }
          //密封person
          Object.seal(person);
          //添加age屬性
          person.age = 23;
          //輸出name屬性的屬性描述符
          console.log(Object.getOwnPropertyDescriptor(person, 'name'));
          // { value: 'noshower',writable: true, enumerable: true,configurable:false }
          console.log(person.age); // undefined 表明不可添加新屬性
          delete person.name;
          console.log(person.name); // noshower 表明不可刪除屬性

          4. 凍結對象

          Object.freeze()方法可以凍結一個對象。這個方法實際上會在一個現有對象上調用Object.seal()并把所有數據訪問屬性標記為writable:false,這樣就無法修改它們了。

          舉個例子:

          let person = {
              name: 'noshower'
          }
          //凍結person對象
          Object.freeze(person);
          
          console.log(Object.getOwnPropertyDescriptor(person, 'name'));
          // { value: 'noshower',writable: false, enumerable: true,configurable:false }
          person.name = 'Jack';
          console.log(person.name); // noshower 表明屬性不可修改

          控制一個對象的不可變性,有四個方法:Object.defineProperty(或者Object.defineProperties),Object.preventExtensions,Object.seal,Object.freeze。

          站長推薦

          1.阿里云: 本站目前使用的是阿里云主機,安全/可靠/穩定。點擊領取2000元代金券、了解最新阿里云產品的各種優惠活動點擊進入

          2.騰訊云: 提供云服務器、云數據庫、云存儲、視頻與CDN、域名等服務。騰訊云各類產品的最新活動,優惠券領取點擊進入

          3.廣告聯盟: 整理了目前主流的廣告聯盟平臺,如果你有流量,可以作為參考選擇適合你的平臺點擊進入

          鏈接: http://www.modern-decoration.com.cn/article/detial/8049

          javascript中什么是句柄?

          一個句柄是指使用的一個唯一的整數值,即一個4字節(64位程序中為8字節)長的數值,來標識應用程序中的不同對象和同類中的不同的實例。

          為什么javascript不起作用?

          JavaScript是一種屬于網絡的腳本語言,已經被廣泛用于Web應用開發,常用來為網頁添加各式各樣的動態功能,為用戶提供更流暢美觀的瀏覽效果。通常JavaScript腳本是通過嵌入在HTML中來實現自身的功能的。

          javascript怎么判斷按鈕被點擊?

          JavaScript可以通過Event對象的target事件或srcElement(IE瀏覽器支持)來判斷按鈕是否被點擊。Event對象代表事件的狀態,比如事件在其中發生的元素、鍵盤按鍵的狀態、鼠標的位置、鼠標按鈕的狀態。

          javascript由幾部分組成?

          JavaScript有三部分組成。分別為核心(ECMAScript) 、文檔對象模型(DOM)、瀏覽器對象模型(BOM)。這三部分分別描述了該語言的語法和基本對象、處理網頁內容的方法和接口、與瀏覽器進行交互的方法和接口。

          Js輸出方式有哪些?

          在編寫JavaScript代碼的時候, 一定要記住每一句代碼后面都需要添加一個分號, 并且這個分號必須是英文的分號,我們會發現有時候不寫分號程序也能夠運行, 這里并不是因為不需要分號, 而是瀏覽器自動幫助我們添加了分號

          7個常見的 JavaScript 測驗及解答

          我相信學習新事物并評估我們所知的東西對自己的進步非常有用,可以避免了我們覺得自己的知識過時的情況。在本文中,我將介紹一些常見的 JavaScript 知識。請享用!

          Js中constructor指向問題

          首先用一個例子指出來constructor存在形式。由上面的代碼我們總結出結論1:上面的代碼在控制臺可以看出constructor是指向構造器Fruit的引用。這個地方就有點奇怪了。這個constructor到底指向的是那個實例的構造器?

          javascript難點是什么?

          javascript難點是什么?下面本篇文章就來給大家介紹一下10個JavaScript難點,感興趣的小伙伴們可以參考一下,希望對大家有所幫助。立即執行函數,即Immediately Invoked Function Expression (IIFE),正如它的名字

          Js如何獲取ul中li的個數?

          javascript如何獲取ul中li的個數?下面本篇文章就來給大家介紹一下使用javascript獲取ul中li個數的方法,希望對大家有所幫助。

          javascript怎么輸出?

          JavaScript怎么輸出?輸出方式有哪些?下面本篇文章就給大家介紹JavaScript的幾種輸出方式。window.alert()方法用于顯示帶有一條指定消息和一個【確認】 按鈕的警告框。

          內容以共享、參考、研究為目的,不存在任何商業目的。其版權屬原作者所有,如有侵權或違規,請與小編聯系!情況屬實本人將予以刪除!

          文章投稿關于web前端網站點搜索站長推薦網站地圖站長QQ:522607023

          小程序專欄: 土味情話心理測試腦筋急轉彎幽默笑話段子句子語錄成語大全運營推廣

          国产精品高清视频免费 - 视频 - 在线观看 - 影视资讯 - 唯爱网