本篇內(nèi)容介紹了“JS構(gòu)造函數(shù)實(shí)例對(duì)象和原型對(duì)象之間的關(guān)系是什么”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)建站主營(yíng)萬(wàn)秀網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都app開(kāi)發(fā),萬(wàn)秀h5重慶小程序開(kāi)發(fā)搭建,萬(wàn)秀網(wǎng)站營(yíng)銷推廣歡迎萬(wàn)秀等地區(qū)企業(yè)咨詢
//自定義構(gòu)造函數(shù) function Person(name,age,gender) { this.name = name; this.age = age; this.gender = gender; this.eat = function () { console.log("吃大蒜拌臭豆腐加榴蓮醬"); }; }
構(gòu)造函數(shù)---->創(chuàng)建對(duì)象per
var per = new Person('Linda',23,‘female’);
補(bǔ)充:console.dir(per)可以打印出對(duì)象per的結(jié)構(gòu)(屬性與屬性值)
以上我們可以得出實(shí)例對(duì)象與構(gòu)造函數(shù)之間的關(guān)系如下:
1. 實(shí)例對(duì)象是通過(guò)構(gòu)造函數(shù)來(lái)創(chuàng)建的---創(chuàng)建的過(guò)程叫實(shí)例化
2. 如何判斷對(duì)象是不是某構(gòu)造器實(shí)例化的結(jié)果?(推薦第二種)
1) 通過(guò)構(gòu)造器的方式, 即實(shí)例對(duì)象.構(gòu)造器==構(gòu)造函數(shù)名字: console.log(dog.constructor==Animal);
2) 實(shí)例對(duì)象 instanceof 構(gòu)造函數(shù)名字: console.log(dog instanceof Animal);
構(gòu)造函數(shù)創(chuàng)建對(duì)象會(huì)帶來(lái)問(wèn)題,我們來(lái)看以下例子
function Person(name, age) { this.name = name; this.age = age; this.eat = function () { console.log("今天吃紅燒土豆"); } } var per1 = new Person("小白", 20); var per2 = new Person("小黑", 30); per1.eat(); per2.eat();
通過(guò)打印結(jié)果為false可以得出結(jié)論per1,per2并不共享eat方法,那么這很容易推論出通過(guò)自定義構(gòu)造函數(shù)創(chuàng)建的對(duì)象實(shí)例并不節(jié)約內(nèi)存空間,以此引出了原型來(lái)解決這個(gè)問(wèn)題。
function Person(name,age) { this.name=name; this.age=age; } //通過(guò)原型來(lái)添加方法,解決數(shù)據(jù)共享,節(jié)省內(nèi)存空間 Person.prototype.eat=function () { console.log("吃涼菜"); }; var p1=new Person("小明",20); var p2=new Person("小紅",30);
通過(guò)打印結(jié)果我們發(fā)現(xiàn)p1,p2兩個(gè)實(shí)例對(duì)象共享eat方法,實(shí)現(xiàn)了數(shù)據(jù)共享,節(jié)省內(nèi)存空間。但是我們查看實(shí)例對(duì)象的結(jié)構(gòu)并沒(méi)有發(fā)現(xiàn)eat方法 ,但是對(duì)象確實(shí)能調(diào)用到eat方法,這是什么原因呢?
接著我們?cè)賮?lái)查看一下構(gòu)造函數(shù)Person的結(jié)構(gòu)
通過(guò)console.dir(p1)查看對(duì)象的結(jié)構(gòu)時(shí),我們發(fā)現(xiàn)它除了age,name屬性外,還存在一個(gè)_proto_屬性,值是一個(gè)對(duì)象,在JavaScript中被稱為隱式原型。一個(gè)對(duì)象的隱式原型指向構(gòu)造該對(duì)象的構(gòu)造函數(shù)的原型prototype, 這也保證了實(shí)例能夠訪問(wèn)在構(gòu)造函數(shù)原型中定義的屬性和方法。
“JS構(gòu)造函數(shù)實(shí)例對(duì)象和原型對(duì)象之間的關(guān)系是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
分享標(biāo)題:JS構(gòu)造函數(shù)實(shí)例對(duì)象和原型對(duì)象之間的關(guān)系是什么
瀏覽地址:http://chinadenli.net/article34/iegope.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、面包屑導(dǎo)航、Google、網(wǎng)站導(dǎo)航、網(wǎng)站內(nèi)鏈、定制開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)