本文小編為大家詳細介紹“JavaScript構造函數(shù)和原型使用實例分析”,內(nèi)容詳細,步驟清晰,細節(jié)處理妥當,希望這篇“JavaScript構造函數(shù)和原型使用實例分析”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
目前成都創(chuàng)新互聯(lián)已為近1000家的企業(yè)提供了網(wǎng)站建設、域名、網(wǎng)絡空間、網(wǎng)站托管運營、企業(yè)網(wǎng)站設計、莒縣網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
缺點:存在內(nèi)存浪費的問題,
如果有倆對象或者更多就會對一個復雜數(shù)據(jù)類型進行空間的多次開辟
構造函數(shù)原型prototype原型對象主要解決了內(nèi)存浪費的問題構造函數(shù)通過原型分配的函數(shù)是所有對象所共享的。在JavaScript里每一個構造函數(shù)都有一個 prototype屬性,指向另一個對象。這個prototype就是一個對象,prototype這個對象的所有屬性和方法,都會被構造函數(shù)所擁有。這時候就可以使用prototype把方法放到里面供該對象所有的實例對象使用。
對象原型_ proto_對象
對象都會有一個屬性_ proto_ 指向構造函數(shù)的 prototype原型對象,之所以我們對象可以使用構造函數(shù)prototype原型對象的屬性和方法,就是因為對象有_ proto_ 原型的存在。
sy的 _ proto_ 和sym的 _ proto_ 是一樣的方法的查找規(guī)則:首先先看sy,sym對象身上是否有sing 方法,如果有就執(zhí)行這個對象上的sing ,因為存在_ _ proto _ _,就去構造函數(shù)原型對象Prototype的存在,就去構造函數(shù)原型對象Prototype身上去查找sing這個方法(簡單來說就是,我自己有就使用,沒有就去原型對象里找)函數(shù) 和 對象創(chuàng)建時 會自動創(chuàng)建一個屬性 他兩指向同一個空對象
對象原型(_ proto _) 和構造函數(shù)( prototype )原型對象里面都有一個屬性constructor屬性, constructor我們稱為構造函數(shù),因為它指回構造函數(shù)本身。
他們倆里面都有constructor如果prototype里面以對象的形式添加,那么就是prototype指向變了,指向了一個新的原型對象,這個新對象里沒有指向construor,需要自己手動指向一下
當訪問一個對象的屬性(包括方法)時,首先查找這個對象自身有沒有該屬性。 如果沒有就查找它的原型(也就是._ proto _指向的prototype原型對象)。 如果還沒有就查找原型對象的原型( Object的原型對象)。 依此類推一直找到Object為止( null )。
1.在構造函數(shù)中,里面this指向的是對象實例shanyu
可以通過原型對象,對原來的內(nèi)置對象進行擴展自定義的方法.
數(shù)組和字符串內(nèi)置對象不能給原型對象覆蓋操作Array.prototype = {} 如果進行該操作就會使本來有的方法被覆蓋掉,只能是Array.prototype.方法名= function(){} 的方式。
調(diào)用這個函數(shù),并且修改函數(shù)運行時的this指向,有三個參數(shù)分別是thisArg 當前調(diào)用函數(shù)this的指向對象arg1 , arg2傳遞的其他參數(shù)
通過我們打的可以看到this的指向為Son,也就是Son使用了父構造函數(shù)里面的,uname,uage
es6之前并沒有extends所以可以使用構造函數(shù)和模型對象結合的方式來進行繼承操作
讀到這里,這篇“JavaScript構造函數(shù)和原型使用實例分析”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內(nèi)容的文章,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。