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)文章
JavaScript中的this指向綁定規(guī)則及常見面試總結(jié)
這篇文章主要為大家介紹了JavaScript中的this指向綁定規(guī)則及箭頭韓碩中的this指向,還b包含了常見面試總結(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12
js中對(duì)象與對(duì)象創(chuàng)建方法的各種方法
這篇文章主要給大家介紹了關(guān)于js中對(duì)象與對(duì)象創(chuàng)建方法的各種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02
js 倒計(jì)時(shí)(高效率服務(wù)器時(shí)間同步)
首先說一下,為什么要服務(wù)器時(shí)間同步, 因?yàn)榉?wù)器時(shí)間和本地電腦時(shí)間存在一定的時(shí)間差。有些對(duì)時(shí)效性要求非常高的應(yīng)用,例如時(shí)時(shí)彩開獎(jiǎng),是不能容忍這種時(shí)間差存在的2017-09-09
不能再簡(jiǎn)單的無閃刷新驗(yàn)證碼原理很簡(jiǎn)單
不能再簡(jiǎn)單的無閃刷新驗(yàn)證碼原理很簡(jiǎn)單...2007-11-11
用javascript獲取任意顏色的更亮或更暗顏色值示例代碼
最近在工作中遇到的一個(gè)需求,發(fā)現(xiàn)網(wǎng)上沒有相對(duì)應(yīng)的解決方法,索性自己寫一個(gè),所以這篇文章主要給大家介紹了關(guān)于利用javascript獲取任意顏色更亮或更暗顏色值的相關(guān)資料,文中給出了詳細(xì)的示例代碼,需要的朋友可以參考借鑒,下面來一起看看吧。2017-07-07
JS實(shí)現(xiàn)獲取數(shù)組中最大值或最小值功能示例
這篇文章主要介紹了JS實(shí)現(xiàn)獲取數(shù)組中最大值或最小值功能,結(jié)合實(shí)例形式總結(jié)分析了javascript獲取數(shù)組最大值與最小值的三種常見操作技巧,需要的朋友可以參考下2019-03-03
在layui下對(duì)元素進(jìn)行事件綁定的實(shí)例
今天小編就為大家分享一篇在layui下對(duì)元素進(jìn)行事件綁定的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-09-09

