<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 前言 也許你已經認為對對象的基本認識了,但還是跟小編一起過一遍js對象的基本知識吧。 ## 對象 ### 基本分類 * 內置對象:語法內定義的對象或者類,例如數組、函數、日期和正則表達式等 * 宿主對象:js解釋器所嵌入的宿主環境 * 自定義對象:解釋器運行中創建的對象 ## 對象的創建 * 對象直接量 :賦值方式 var empty={}; var o={a:32,b:45} * new 關鍵字創建 :var obj= new Person(); * 通過`Object.creat()`; ### 對象深拷貝 * 與淺拷貝的區別是,對象的屬性是非基礎類型數據也是可以的 ~~~ if (typeof Object.assign != 'function') { Object.assign = function(target) { 'use strict'; if (target == null) { throw new TypeError('Cannot convert undefined or null to object'); } target = Object(target); for (var index = 1; index < arguments.length; index++) { var source = arguments[index]; if (source != null) { for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } } return target; }; } ~~~ [深拷貝參考文檔](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/assign ) ### 對象屬性 #### 屬性分類 * 屬性:自有屬性和繼承屬性 * 自有屬性:直接在對象中定義的屬性 * 繼承屬性:對象的原型對象中定義的屬性。 #### 屬性操作 * 查詢屬性 1 可以通過. 或者[] 修改,中括號的時候名稱需要加引號 2 賦值直接通過= 賦值即可。 * 刪除屬性 delete this.prop * 檢測屬性 1.檢測所有的屬性 prop in obj (包括私有屬性以及繼承屬性) 2.檢測私有屬性 hasOwnProperty("x") * 遍歷屬性 ~~~ //for in 短循環遍歷屬性 for(var p in obj){ console.log(p+":"+obj[p]) } ~~~ ## 對象方法 ## 對象復制,繼承等 ## es6拓展 * 對象的結構賦值 對象的賦值與數組的賦值區別最大就是,數組是按照次序賦值的,而對象是按照鍵值對賦值的,無序的。也就是說,變量名必須與屬性同名才可以。 ~~~ var x;//已經申明過的變量,避免解釋x為代碼塊,不在首行 ({x})={x:1};====({x}={x:1});//正確寫法 //其他舉例 var {foo,far}={foo:"aaa",far:"aaa"};//可以分別得到foo ,far的賦值 var {va}={foo:"aaa",far:"aaa"};//va undefined var {foo:va}={foo:"aaa",far:"aaa"};//va =aaa 變量名與屬性名不一樣的時候 var p={ o:[ "hello",{y:"world"}] } var {o:[x,{y}]}=p; //對象也可以用來解析嵌套 結構 ~~~ * is() 判斷兩個值是否相等,與===區別就是+0!=-0,nan=nan. * assign 將對象的可枚舉屬性復制到目標對象,至少需要兩個對象作為參數。第一個是目標對象,第二個是參數對象,當為多個對象時,也會分別復制過來。特別注意的是:當屬性名相同的時候,屬性值會被覆蓋。 ~~~ var target={a:3}; var source1={a:1}; var source2={b:3}; Object.assign(target,source1,source2); ~~~ * _proto_屬性,用來讀取或者設置對象的prototype對象。相關的有setPrototypeOf,getPrototypeOf() * 增強的對象寫法 增強之后允許直接寫入變量和函數,書寫更加簡潔 var person={ birth,//birth:birth hello(){}//hello=fn(); } * 屬性名表達式 允許對象的屬性是變量or表達式,但要求其在中括號內 ~~~ var lastword="last world"; var a={ firstword:"first world", [lastword] : 'last dew d', [lastword+'dv'] : 'last dew d' } ~~~ * Symbol 新增的原始數據類型,不可以通過new創建。可以隨機生成不重復變量,獲取為.name,也可以通過指定name實現。 目前得不到name ~~~ let q1=Symbol(); let q2=Symbol(); let q3=Symbol(); ~~~ * proxy 對象創建使用之前的攔截 ~~~ var person ={ name:12 } var proxy=new Proxy(person,{ get:function(target,property){ if(property in tearget){ return target[property]; }else{ throw new ReferenceError("not exist"); } } }) person.age// 拋出錯誤 pserson.name//12 ~~~ * 對象的監聽 observe unobserve ,暫不支持 ~~~ function observer(change){ console.log(change.name+change.oldValue+change.object(change.name)+change.type); } var o={}; Object.observe(o,observer);// ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看