<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                目錄 (づ ̄ 3 ̄)づ=> [TOC] --- >[info] ## Object.assign(target,obj1,obj2); 以上方法為淺復制 >[info] ## Object.create(proto,propertiesObject); create方法返回一個新對象,這個新對象的prototype為create方法的第一個參數。 create方法的第二個參數是對返回的這個新對象的屬性一些描述配置,可設置可讀可枚舉神馬的 >[warning] **詳見:** [屬性描述符](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty) ``` //繼承 Child.prototype = Object.create(Parent.prototype) //實現是類似于下面的create方法 function create(proto){ function Fn(){} Fn.prototype = proto; return new Fn(); } ``` **注意:** 此方法并沒有順道改變prototype中的constructor屬性,導致繼承對象的constructor指向的是被繼承對象的構造函數,需要修正 >[info] ## Object.setPrototypeOf(obj,newPrototype); **推薦的繼承方法,因為不會誤改prototype中的constructor** ``` Child.prototype.__proto__ = Parent.prototype; //和Object.setPrototypeOf(Child,Parent.prototype)等效 ``` ![](https://box.kancloud.cn/a601587e2e4508398753eb950ef28050_362x201.png) **__proto__**指向大的是new出該對象的構造函數下的原型 ![](https://box.kancloud.cn/b653a8c080a3e6c5f9ae849e60417fef_650x322.png) >[danger] function是Function的原型,它的情況比較特殊,一般的原型都應為Object類型而它是function,且Function的原型鏈指向的是function,這意味著什么呢?一般情況下,一個對象下的原型鏈指向的是new出這個對象的構造函數下的原型,function是Function下的原型,這意味著Function自己new出了自己,換句話說Function就到頭了!但是,function卻還可查,它的原型鏈指向Object 意味著是 function Object new出來的。然而這個function Object的原型鏈指向的確是function!! **故源頭兩個一個Function構造函數對象,一個Object原型對象** ![](https://box.kancloud.cn/4ba9240ccdc73511030e03c3efe8f882_539x627.png) >[info] ## Object.prototype.toString; **多用來精確判斷一個數據類型** - Object.prototype.toString.call([])==='[object Array]' - Object.prototype.toString.call('')==='[object String]' - Object.prototype.toString.call({})==='[object Object]' **注意:** object的tostring追述到Object對象下原型的方法。 而其它系統對象,例如數組的tostring方法追述到數組對象下的tostring方法。 另外調用系統對象下的,例如[].tostring,輸出是數組中的數組成員串起來的一串字符串,''.tostring就是本身那串字符串,而{}.tostring因為調用的是原型鏈上Object.prototype.tostring,故輸出為'[object Object]'。 >[info] ## Object.keys(); 如果是一個數組,則返回數組索引的集合; 如果是一個對象,則返回對象鍵名的集合。 >[info] ## NodeJS中的inherit ``` let util = require('util'); let EventEmitter = require('events'); util.inherits(Child,EventEmitter) //上面的繼承等于// console.log(Child.prototype.__proto__===EventEmitter.prototype) //true let c = new Child(); c.on('a',function(){ console.log(this===c); //true //this調用正常 }) c.emit('a') ```
                  <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>

                              哎呀哎呀视频在线观看