new的過程

      網友投稿 635 2025-03-31

      函數調用時前面不加new就按普通函數來 執行。加new后對其進行了相應的變動, 按構造函數來執行。

      new的具體過程如下:

      //例子:

      function Person(name,age) {

      this.userName = name;

      this.userAge = age;

      }

      var personl = new Person('LULU',20)

      1、創建一個新的空對象。(即實例對象)

      new的過程

      obj = {}

      2 、設 置 原 型 鏈

      將新對象obj的 __proto__屬性指向構造函數的prototype 對象。(即所有實例對象通過__proto__可 以訪問原型對象。構造函數的原型被其所有實例對象共享。)

      obj.__proto__= Person.prototype

      3 、將構造函數的thi s改指向新對象ob j并 執行函數代碼。

      (即給實例對象設置屬性 userName, userAge并賦值。)

      var result = Person.apply(obj,['LULU',20])

      4 、如果構造函數中沒有人為返回一個對象 類型的值,則返回這個新對象obj。否則直 接返回那個對象類型值。(一般定義的構造 函數中不寫返回值。)

      if (typeof(result) == 'object') {

      return result;

      }else{

      return obj;

      }

      手動實現一個new操作,參數為構造函數 及其傳參

      //構造函數

      function Person(name,age) {

      this.userName = name;

      this.userAge = age;

      }

      Person.prototype.sayAge = function(){

      console.log(this.userAge)

      }

      // new操作函數newFun

      function newFun() {

      var obj = {};

      Constructor = [].shift.call(arguments);

      obj.__proto__ = Constructor.prototype;

      var ret = Constructor.apply(obj, arguments);

      return typeof ret === 'object' ? ret: obj;

      };

      //調用 newFun

      var s1 = newFun(Person, 'xiaoyun',20);

      console.log(s1.userName) //xiaoyun

      console.log(s1.sayAge()) //20

      備注:[].shift.call(arguments):刪除并返回參數列表arguments中第一個參數,即獲得構造函數。arguments剩余參數為構數傳參。arguments是類數組,沒有數組方法shift,可更改shift方法的this指向從而運用到 arguments 上。

      數據結構

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:怎么在每一頁設置一樣的表頭?(怎么設置表頭每一頁都有)
      下一篇:文本框繞排(停用文本繞排)
      相關文章
      国产精品亚洲精品| 日韩色视频一区二区三区亚洲| 久久精品国产亚洲AV未满十八| 亚洲熟妇无码久久精品| 亚洲av日韩综合一区在线观看| 国产成人毛片亚洲精品| 亚洲精品97久久中文字幕无码| 亚洲av中文无码字幕色不卡| 激情无码亚洲一区二区三区 | 亚洲日韩精品无码专区| 亚洲人成网站日本片| 亚洲在成人网在线看| 亚洲成人黄色网址| 亚洲经典在线观看| 亚洲成a人片在线不卡| 国产精品高清视亚洲精品| 亚洲三级在线免费观看| 国产成人精品日本亚洲专区6| 久久综合久久综合亚洲| 亚洲国产精品一区二区九九| 国产亚洲精品免费| 亚洲av无码天堂一区二区三区 | 亚洲乱码中文字幕在线| 欧美亚洲国产SUV| 亚洲日韩人妻第一页| 国产偷国产偷亚洲高清日韩| 久久久久亚洲AV无码专区桃色| 国产亚洲成AV人片在线观黄桃 | 亚洲一二成人精品区| 亚洲高清美女一区二区三区| wwwxxx亚洲| 久久久久亚洲精品无码网址色欲| 亚洲成av人无码亚洲成av人| 亚洲欧洲一区二区三区| 亚洲熟妇无码AV在线播放| 亚洲精品无码不卡| 亚洲一区二区三区免费在线观看| 亚洲精品无码高潮喷水A片软| 国产亚洲蜜芽精品久久| 亚洲中文字幕无码永久在线| 亚洲无线电影官网|