JavaScript原型式繼承實(shí)現(xiàn)方法
這篇文章主要介紹了JavaScript原型式繼承實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
在2006年,有個(gè)叫道格拉斯·克羅克福德的人寫了一篇文章,題目翻譯為中文就是JavaScript中的原型式繼承。在此文章里,他介紹了一種實(shí)現(xiàn)繼承的方法。他的想法是借助原型可以基于已有的對(duì)象創(chuàng)建新對(duì)象,同時(shí)還不必因此創(chuàng)建自定義類型。于是,他就寫下了如下的函數(shù):
function object(o){ function F(){}; F.prototype = o; return new F(); }
實(shí)現(xiàn)方法如下:
//在object()函數(shù)的內(nèi)部,先創(chuàng)建了一個(gè)臨時(shí)性的構(gòu)造函數(shù),然后將傳入的對(duì)象作為這個(gè)構(gòu)造函數(shù)的原型,最后返回了這個(gè)臨時(shí)類型的一個(gè)新實(shí)例 var person = { name:"Nick", friends:["xiaowang","xiaochen"] }; var person1 = object(person); person1.name = "Mike"; person1.friends.push("xiaozhang"); var person2 = object(person); person2.name = "lifei"; person2.friends.push("xiaoli"); console.log("person1:" + person1.name); console.log("person2:" + person2.name) console.log("person1 friends:" + person1.friends); console.log("person2 friends:" + person2.friends); console.log("all friends:" + person.friends);
運(yùn)行結(jié)果如下:
哇,怎么和原型鏈繼承模式一樣,不管你建了多少個(gè)實(shí)例,這個(gè)父類的引用值始終都會(huì)被這些個(gè)子類所創(chuàng)建的實(shí)例共享,所以這種繼承方式名為原型式繼承,和原型鏈就差一個(gè)字=。=
對(duì)咯,在ES5中,新增了Object.create()方法規(guī)范化了原型式繼承,它有兩個(gè)參數(shù),第一個(gè)參數(shù)是用作新對(duì)象原型的對(duì)象,第二個(gè)參數(shù)是可選的,是一個(gè)為新對(duì)象定義額外屬性的對(duì)象。在傳入一個(gè)參數(shù)的時(shí)候,這個(gè)方法是和object()方法一樣一樣的!
相關(guān)文章
原生Js Canvas去除視頻綠幕背景的方法實(shí)現(xiàn)
本文主要介紹了原生Js Canvas去除視頻綠幕背景的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-09-09原生javascript實(shí)現(xiàn)的全屏滾動(dòng)功能示例
這篇文章主要介紹了原生javascript實(shí)現(xiàn)的全屏滾動(dòng)功能,涉及javascript事件響應(yīng)及頁(yè)面元素屬性動(dòng)態(tài)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-09-09javascript動(dòng)態(tài)添加表格數(shù)據(jù)行(ASP后臺(tái)數(shù)據(jù)庫(kù)保存例子)
本文,我將以一個(gè)類似的例子來做一個(gè)前臺(tái)用Javascript動(dòng)態(tài)添加數(shù)據(jù)項(xiàng),后臺(tái)保存到數(shù)據(jù)庫(kù)的例子。2010-05-05微信小程序使用Promise簡(jiǎn)化回調(diào)
本篇文章主要介紹了微信小程序使用Promise簡(jiǎn)化回調(diào),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-02-02IE圖片緩存document.execCommand("BackgroundImageCache",
IE6下設(shè)置背景圖片是不會(huì)被真正cache住的,就算服務(wù)器做了cache,如果想cache住只能2011-03-03Javascript調(diào)用函數(shù)方法的幾種方式介紹
這篇文章主要介紹了Javascript調(diào)用函數(shù)方法的幾種方式介紹,本文講解了func()、(function(arg){})(window)、func.bind(sth)()、func.call()、func.apply()等5種方式,需要的朋友可以參考下2015-03-03