gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

什么是構(gòu)造函數(shù)?詳解JavaScript中的構(gòu)造函數(shù)

作為原型和原型鏈的基礎(chǔ),先了解清楚構(gòu)造函數(shù)以及它的執(zhí)行過程才能更好地幫助我們學(xué)習(xí)原型和原型鏈的知識。本篇文章帶大家詳細(xì)了解一下JavaScript中的構(gòu)造函數(shù),介紹一下怎么利用構(gòu)造函數(shù)創(chuàng)建一個js對象,希望對大家有所幫助!

什么是構(gòu)造函數(shù)?詳解JavaScript中的構(gòu)造函數(shù)

1、什么是構(gòu)造函數(shù)?

一個普通的函數(shù)被用于創(chuàng)建一個類對象時,它就被稱作構(gòu)造函數(shù),或者構(gòu)造器。(為方便理解,你可以將JavaScript中構(gòu)造器的創(chuàng)建理解為其他語言中的類的創(chuàng)建,目的就是利用它通過new來實(shí)列一個對象)

function Person(){ //... } //當(dāng)做普通函數(shù)調(diào)用 var obj=Person();  //構(gòu)造函數(shù)調(diào)用 	 var obj=new Person();

構(gòu)造函數(shù)的特點(diǎn):

  • 在書寫規(guī)范上,我們習(xí)慣將構(gòu)造函數(shù)名稱的首字母大寫。

  • 通過new來創(chuàng)建一個對象。

  • 無需在內(nèi)寫入return也會有返回值,而且返回的是一個對象。

利用構(gòu)造函數(shù)創(chuàng)建一個js對象

  • 構(gòu)造函數(shù)創(chuàng)建對象(方法寫在構(gòu)造函數(shù)里,缺點(diǎn):構(gòu)造函數(shù)每執(zhí)行一次, 就會創(chuàng)建一次方法。)

	  function Person(name,age,gender){             this.name=name;             this.age=age;             this.gender=gender;             // 方法寫在里面             this.sayName=function(){                  console.log(this.name);              }                 }                function Dog(name,age){               this.name=name;               this.age=age;           }                     var obj=new Person("張三",18,"男");           var obj1=new Person("李四",16,"男");                      var dog=new Dog("樂樂",2);           obj.sayName();           obj1.sayName();                      console.log(obj);           console.log(obj1);           console.log(dog);
  • 構(gòu)造函數(shù)創(chuàng)建對象(方法寫在構(gòu)造函數(shù)外,缺點(diǎn): 方法為全局方法,污染全局。)

	   function Person(name,age,gender){             this.name=name;             this.age=age;             this.gender=gender;             this.sayName=fun;   //方法寫在外面           }     	 function fun(){             console.log(this.name);         }           function Dog(name,age){               this.name=name;               this.age=age;           }                      var obj=new Person("張三",18,"男");           var obj1=new Person("李四",16,"男");                      var dog=new Dog("樂樂",2);           obj.sayName();           obj1.sayName();                      console.log(obj);           console.log(obj1);           console.log(dog);
  • 構(gòu)造函數(shù)創(chuàng)建對象改造(方法通過原型對象創(chuàng)建)

原型對象:prototype

我們所創(chuàng)建的每一個函數(shù),解析器都會向函數(shù)中添加一個prototype屬性。

指向構(gòu)造函數(shù)的原型對象,我們可以通過__proto__來訪問該屬性。

構(gòu)造函數(shù).prototype.xxx , xxx可以是變量,可以是方法。執(zhí)行過程中會先去對象中找方法或者變量, 找不到就會去原型里尋找。

	  function Person(name,age,gender){             this.name=name;             this.age=age;             this.gender=gender;           }           function Dog(name,age){               this.name=name;               this.age=age;           }                    /*為person添加統(tǒng)一的方法, 到原型對象中*/         Person.prototype.sayName=function(){             console.log(this.name);         }           var obj=new Person("張三",18,"男");           var obj1=new Person("李四",16,"男");                      var dog=new Dog("樂樂",2);           obj.sayName();           obj1.sayName();                      console.log(obj);           console.log(obj1);           console.log(dog);

運(yùn)行結(jié)果:

什么是構(gòu)造函數(shù)?詳解JavaScript中的構(gòu)造函數(shù)

2、為什么要使用構(gòu)造函數(shù)?

學(xué)習(xí)每一個概念,不僅要知道它是什么,還要知道為什么,以及解決什么樣的問題。

舉個例子,我們要錄入一年級一班中每一位同學(xué)的個人信息,那么我們可以創(chuàng)建一些對象,比如:

var p1 = { name: 'zs', age: 6, gender: '男', hobby: 'basketball' }; var p2 = { name: 'ls', age: 6, gender: '女', hobby: 'dancing' }; var p3 = { name: 'ww', age: 6, gender: '女', hobby: 'singing' }; var p4 = { name: 'zl', age: 6, gender: '男', hobby: 'football' }; // ...

像上面這樣,我們可以把每一位同學(xué)的信息當(dāng)做一個對象來處理。但是,我們會發(fā)現(xiàn),我們重復(fù)地寫了很多無意義的代碼。比如 name、age、gender、hobby 。如果這個班上有60個學(xué)生,我們得重復(fù)寫60遍。

這個時候,構(gòu)造函數(shù)的優(yōu)勢就體現(xiàn)出來了。我們發(fā)現(xiàn),雖然每位同學(xué)都有 name、gender、hobby這些屬性, 但它們都是不同的,那我們就把這些屬性當(dāng)做構(gòu)造函數(shù)的參數(shù)傳遞進(jìn)去。而由于都是一年級的學(xué)生,age 基本都是6歲,所以我們就可以寫死,遇到特殊情況再單獨(dú)做處理即可。此時,我們就可以創(chuàng)建以下的函數(shù):

function Person(name, gender, hobby) {     this.name = name;     this.gender = gender;     this.hobby = hobby;     this.age = 6; }

當(dāng)創(chuàng)建上面的函數(shù)以后, 我們就可以通過 new 關(guān)鍵字調(diào)用,也就是通過構(gòu)造函數(shù)來創(chuàng)建對象了。

var p1 = new Person('zs', '男', 'basketball'); var p2 = new Person('ls', '女', 'dancing'); var p3 = new Person('ww', '女', 'singing'); var p4 = new Person('zl', '男', 'football'); // ...

此時你會發(fā)現(xiàn),創(chuàng)建對象會變得非常方便。所以,雖然封裝構(gòu)造函數(shù)的過程會比較麻煩,但一旦封裝成功,我們再創(chuàng)建對象就會變得非常輕松,這也是我們?yōu)槭裁匆褂脴?gòu)造函數(shù)的原因。

在使用對象字面量創(chuàng)建一系列同一類型的對象時,這些對象可能具有一些相似的特征(屬性)和行為(方法),此時會產(chǎn)生很多重復(fù)的代碼,而使用構(gòu)造函數(shù)就可以實(shí)現(xiàn)代碼復(fù)用

3、構(gòu)造函數(shù)的執(zhí)行過程

先說一點(diǎn)基本概念。

function Animal(color) {  this.color = color; }

當(dāng)一個函數(shù)創(chuàng)建好以后,我們并不知道它是不是構(gòu)造函數(shù),即使像上面的例子一樣,函數(shù)名為大寫,我們也不能確定。只有當(dāng)一個函數(shù)以 new 關(guān)鍵字來調(diào)用的時候,我們才能說它是一個構(gòu)造函數(shù)。就像下面這樣:

var dog = new Animal("black");

以下我們只討論構(gòu)造函數(shù)的執(zhí)行過程,也就是以 new 關(guān)鍵字來調(diào)用的情況。

我們還是以上面的 Person 為例。

function Person(name, gender, hobby) {  this.name = name;  this.gender = gender;  this.hobby = hobby;  this.age = 6; }  var p1 = new Person('zs', '男', 'basketball');

此時,構(gòu)造函數(shù)會有以下幾個執(zhí)行過程:

1)當(dāng)以 new 關(guān)鍵字調(diào)用時,會創(chuàng)建一個新的內(nèi)存空間,標(biāo)記為 Animal 的實(shí)例。

2)函數(shù)體內(nèi)部的 this 指向該內(nèi)存

通過以上兩步,我們就可以得出這樣的結(jié)論。

var p2 = new Person('ls', '女', 'dancing');  // 創(chuàng)建一個新的內(nèi)存 #f2 var p3 = new Person('ww', '女', 'singing');  // 創(chuàng)建一個新的內(nèi)存 #f3

每當(dāng)創(chuàng)建一個實(shí)例的時候,就會創(chuàng)建一個新的內(nèi)存空間(#f2, #f3),創(chuàng)建 #f2 的時候,函數(shù)體內(nèi)部的 this 指向 #f2, 創(chuàng)建 #f3 的時候,函數(shù)體內(nèi)部的 this 指向 #f3。

3) 執(zhí)行函數(shù)體內(nèi)的代碼
通過上面的講解,你就可以知道,給 this 添加屬性,就相當(dāng)于給實(shí)例添加屬性。

4)默認(rèn)返回 this

由于函數(shù)體內(nèi)部的this指向新創(chuàng)建的內(nèi)存空間,默認(rèn)返回 this ,就相當(dāng)于默認(rèn)返回了該內(nèi)存空間,也就是上圖中的 #f1。此時,#f1的內(nèi)存空間被變量p1所接受。也就是說 p1 這個變量,保存的內(nèi)存地址就是 #f1,同時被標(biāo)記為 Person 的實(shí)例。

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
免费毛片小视频| 免费观看国产精品视频| 中文字幕网av| 亚洲一区日韩精品| 日本中文字幕精品—区二区| av亚洲天堂网| 特级黄色片视频| 久久久成人精品一区二区三区| 中文字幕第88页| 欧美二区在线视频| 无码人妻精品一区二区三区在线 | 一女被多男玩喷潮视频| 亚洲国产精品女人| 日韩人妻一区二区三区蜜桃视频| 欧美一级免费在线| 999热精品视频| 国产一二三四五| 久久亚洲a v| 久久久久久久久久久99| 国产日产欧美视频| 手机视频在线观看| 特级黄色录像片| 国产美女视频免费| 久久久久久久久网| 成人免费视频91| 97av视频在线观看| 天天干在线影院| 91aaa精品| 欧美交换配乱吟粗大25p| 欧美乱大交xxxxx潮喷l头像| 国产xxxxx在线观看| 天堂av在线网站| 男插女免费视频| 男人日女人逼逼| 日韩精品你懂的| 亚洲一区 在线播放| 91九色在线观看视频| 九热视频在线观看| 成人手机视频在线| 亚洲熟妇国产熟妇肥婆| 国产一区二区在线免费播放| 国产高清精品软男同| 欧美私人情侣网站| 福利视频999| 国产夫妻自拍一区| 日韩大片一区二区| 丝袜人妻一区二区三区| 粉色视频免费看| 国产 日韩 欧美在线| 亚洲高清在线免费观看| 蜜桃视频一区二区在线观看| 国产97色在线 | 日韩| 国产女教师bbwbbwbbw| 黄色高清无遮挡| 欧美激情国产精品日韩| 一区二区传媒有限公司| 国产精品久久久久久久99| 9久久9毛片又大又硬又粗| 性鲍视频在线观看| www.日日操| 久久精品国产sm调教网站演员| 欧美在线aaa| 日韩精品xxxx| 日本免费成人网| 亚洲精品国产一区二区三区| 国产精品裸体瑜伽视频| 好吊色这里只有精品| www欧美激情| 成人小视频在线看| 免费国产黄色网址| 大桥未久一区二区| 欧美性猛交xxxx乱大交91| 999精品网站| 国产精品久久久毛片| 自拍日韩亚洲一区在线| 欧美精品在欧美一区二区| 中文字幕资源在线观看| 黄色一级大片在线观看| 日韩欧美国产综合在线| 日韩欧美视频免费在线观看| 在线观看日本www| 日本不卡一区在线| 一区二区三区视频在线观看免费| 久久网站免费视频| 极品美女扒开粉嫩小泬| 污污网站免费观看| 国产在线xxxx| 在线观看日本一区二区| 粉嫩虎白女毛片人体| 久久久一本二本三本| 国产天堂视频在线观看| 国内少妇毛片视频| 91视频 - 88av| 国产一线二线三线女| 国产精品igao激情视频| www.国产二区| 国产自产在线视频| 鲁一鲁一鲁一鲁一色| 日韩av片在线看| 欧美精品第三页| 五月天激情视频在线观看| 亚洲激情在线看| 日本一道在线观看| 欧妇女乱妇女乱视频| av免费观看大全| 免费在线观看毛片网站| 亚洲免费一级视频| 国产一区二区在线观看免费视频| 国产高清www| 中文国产在线观看| 中文字幕第一页亚洲| 成人在线免费观看av| 国产偷人视频免费| 伊人网在线综合| 99re6这里有精品热视频| 日韩中字在线观看| 妺妺窝人体色www在线小说| 国产精品亚洲a| 一区二区三区四区毛片| 人妻无码一区二区三区四区| 黄色国产一级视频| 邪恶网站在线观看| 妞干网在线视频观看| 中文字幕第21页| youjizz.com亚洲| 免费看又黄又无码的网站| www.色偷偷.com| 蜜臀av性久久久久蜜臀av| 国产一区二区在线视频播放| 欧美wwwwwww| 久久av综合网| 五月天综合婷婷| 污视频免费在线观看网站| 亚洲成人天堂网| 成人观看免费完整观看| 午夜在线视频免费观看| 日本成人黄色网| 乱熟女高潮一区二区在线| www.四虎成人| 欧美国产日韩在线视频| 91社在线播放| 黑人糟蹋人妻hd中文字幕| av不卡在线免费观看| chinese少妇国语对白| 丁香六月激情网| 国产福利影院在线观看| 久久久久久久中文| 小说区视频区图片区| 欧美精品久久久久久久久久久| 日韩欧美在线免费观看视频| 日韩不卡一二区| 韩国日本在线视频| 日本黄色播放器| 在线视频日韩一区 | 你真棒插曲来救救我在线观看| 午夜免费看视频| 国模无码视频一区二区三区| 手机成人av在线| 亚洲免费av一区| 8x8x最新地址| 国产一区亚洲二区三区| 青青草成人免费在线视频| 欧美在线观看视频免费| 吴梦梦av在线| 91热视频在线观看| 免费av不卡在线| 亚洲高清免费在线观看| 日韩中文字幕免费在线| 国产又大又硬又粗| 亚洲精品蜜桃久久久久久| 成人手机在线播放| 一级黄色免费在线观看| av噜噜在线观看| 涩涩网站在线看| 国产免费中文字幕| 亚洲综合婷婷久久| 91丨九色丨蝌蚪| 天天影视色综合| 日韩欧美亚洲另类| 国产一级免费大片| www.国产福利| 青春草在线视频免费观看| 色偷偷中文字幕| 女同性恋一区二区| 99在线精品免费视频| 九九九九免费视频| 五月婷婷狠狠操| 午夜天堂在线视频| 自拍偷拍一区二区三区四区| 日日摸天天爽天天爽视频| 天天操天天摸天天爽| 中文字幕线观看| 黄网站色视频免费观看| 热99这里只有精品| 37pao成人国产永久免费视频| 好男人www社区| 日韩成人av免费| 91视频免费版污| theporn国产精品| 18禁裸男晨勃露j毛免费观看|