国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

原生JS封裝_new函數實現new關鍵字的功能

來源:懂視網 責編:小采 時間:2020-11-27 22:10:07
文檔

原生JS封裝_new函數實現new關鍵字的功能

原生JS封裝_new函數實現new關鍵字的功能:一.前言 眾所周知:沒有對象怎么辦?那就new一個! 那么在JS中,當我們new一個對象的時候,這個new關鍵字內部都干了什么呢? 現在我們就來剖析一下原生JS中new關鍵字內部的工作原理。 二.原始的new 首先,我們先new一個對象看看: //創建Person構
推薦度:
導讀原生JS封裝_new函數實現new關鍵字的功能:一.前言 眾所周知:沒有對象怎么辦?那就new一個! 那么在JS中,當我們new一個對象的時候,這個new關鍵字內部都干了什么呢? 現在我們就來剖析一下原生JS中new關鍵字內部的工作原理。 二.原始的new 首先,我們先new一個對象看看: //創建Person構

一.前言

眾所周知:沒有對象怎么辦?那就new一個!

那么在JS中,當我們new一個對象的時候,這個new關鍵字內部都干了什么呢?
現在我們就來剖析一下原生JS中new關鍵字內部的工作原理。

二.原始的new

首先,我們先new一個對象看看:

 //創建Person構造函數,參數為name,age
 function Person(name,age){
   this.name = name;
   this.age = age;
  }
 //實例化對象小明
 xm = new Person('xiaoming',18);
 //打印實例化出來的對象小明
 console.log(xm);

打印結果:


從打印結果中可以看到:

用new關鍵字實例化對象時,首先創建了一個空對象xm,并且這個空對象包含兩個屬性name和age,分別對應構造函數中的兩個屬性,其次我們也可以知道實例化出來的這個對象xm是繼承自Person.prototype,那么現在我們就可以總結出new關鍵字在實例化對象時內部都干了什么,其實,new關鍵字內部干了如下三件事(已知構造函數為Func):

1.創建一個空對象,并使該空對象繼承Func.prototype;

2.執行構造函數,并將this指向剛剛創建的新對象;

3.返回新對象;

三.封裝_new函數

當我們知道new關鍵字的內部原理后,我們就可以封裝一個_new函數,使其用于與new關鍵字同樣的功能。

_new函數需要傳入以下幾個參數:

第一個參數:構造函數名Func;

第二個參數及后面的參數:構造函數的參數

 function _new(){
  //1.拿到傳入的參數中的第一個參數,即構造函數名Func
   var Func = [].shift.call(arguments);
   //2.創建一個空對象obj,并讓其繼承Func.prototype
   var obj = Object.create(Func.prototype);
   //3.執行構造函數,并將this指向創建的空對象obj
   Func.apply(obj,arguments)
   //4.返回創建的對象obj
   return obj
 }

四.測試_new函數

封裝好后,我們來測試一下封裝的_new函數,看看它是否實現了和原生new關鍵字同樣的功能。

 //創建Person構造函數,參數為name,age
 function Person(name,age){
   this.name = name;
   this.age = age;
 } 
 function _new(){
   //1.拿到傳入的參數中的第一個參數,即構造函數名Func
   var Func = [].shift.call(arguments);
   //2.創建一個空對象obj,并讓其繼承Func.prototype
   var obj = Object.create(Func.prototype);
   //3.執行構造函數,并將this指向創建的空對象obj
   Func.apply(obj,arguments)
   //4.返回創建的對象obj
   return obj
 }
 xm = _new(Person,'xiaoming',18);
 console.log(xm);

測試結果:



從測試結果看到,_new函數的功能與new關鍵字完全一致。

總結

以上所述是小編給大家介紹的原生JS封裝_new函數實現new關鍵字的功能,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

原生JS封裝_new函數實現new關鍵字的功能

原生JS封裝_new函數實現new關鍵字的功能:一.前言 眾所周知:沒有對象怎么辦?那就new一個! 那么在JS中,當我們new一個對象的時候,這個new關鍵字內部都干了什么呢? 現在我們就來剖析一下原生JS中new關鍵字內部的工作原理。 二.原始的new 首先,我們先new一個對象看看: //創建Person構
推薦度:
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 一级毛片免费看 | 伊人激情网 | 欧美亚洲免费 | 亚洲综合精品一区二区三区中文 | 自拍偷拍日韩 | 国产精品91av | 国产一级特黄高清免费下载 | 欧美第一网站 | 午夜三级视频 | 日韩欧美亚洲 | 国产 日韩 欧美 亚洲 | 久久精品一区二区国产 | 自拍偷拍 欧美日韩 | 美国一级大黄大色毛片视频一 | 国产一区二区三区免费观看 | 国产在线视频专区 | 精品国产成人综合久久小说 | 国产成人精视频在线观看免费 | 欧美日本一区二区 | 国产产一区二区三区久久毛片国语 | 日韩一区二区久久久久久 | 国产高清在线免费视频 | 欧美在线综合 | 亚洲欧美日韩激情在线观看 | 日韩国产欧美视频 | 美女露胸动态无遮挡 | 精品日本一区二区三区在线观看 | 成人亚洲国产综合精品91 | 国内精品一区二区三区 | 欧美高清在线精品一区二区不卡 | 欧美成人一区二区三区在线视频 | 在线观看欧美一区 | 久久久久777777人人人视频 | 国产大片www| 精品久久久久久久久中文字幕 | 亚洲欧美二区三区久本道 | 一区二区在线播放视频 | 国产成人综合久久精品亚洲 | 一级成人a毛片免费播放 | 国产日韩视频 | 国产在线成人一区二区 |