JavaScript原型式繼承實現(xiàn)方法
這篇文章主要介紹了JavaScript原型式繼承實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
在2006年,有個叫道格拉斯·克羅克福德的人寫了一篇文章,題目翻譯為中文就是JavaScript中的原型式繼承。在此文章里,他介紹了一種實現(xiàn)繼承的方法。他的想法是借助原型可以基于已有的對象創(chuàng)建新對象,同時還不必因此創(chuàng)建自定義類型。于是,他就寫下了如下的函數(shù):
function object(o){ function F(){}; F.prototype = o; return new F(); }
實現(xiàn)方法如下:
//在object()函數(shù)的內(nèi)部,先創(chuàng)建了一個臨時性的構(gòu)造函數(shù),然后將傳入的對象作為這個構(gòu)造函數(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);
運行結(jié)果如下:
哇,怎么和原型鏈繼承模式一樣,不管你建了多少個實例,這個父類的引用值始終都會被這些個子類所創(chuàng)建的實例共享,所以這種繼承方式名為原型式繼承,和原型鏈就差一個字=。=
對咯,在ES5中,新增了Object.create()方法規(guī)范化了原型式繼承,它有兩個參數(shù),第一個參數(shù)是用作新對象原型的對象,第二個參數(shù)是可選的,是一個為新對象定義額外屬性的對象。在傳入一個參數(shù)的時候,這個方法是和object()方法一樣一樣的!
相關(guān)文章
原生Js Canvas去除視頻綠幕背景的方法實現(xiàn)
本文主要介紹了原生Js Canvas去除視頻綠幕背景的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-09-09javascript動態(tài)添加表格數(shù)據(jù)行(ASP后臺數(shù)據(jù)庫保存例子)
本文,我將以一個類似的例子來做一個前臺用Javascript動態(tài)添加數(shù)據(jù)項,后臺保存到數(shù)據(jù)庫的例子。2010-05-05IE圖片緩存document.execCommand("BackgroundImageCache",
IE6下設(shè)置背景圖片是不會被真正cache住的,就算服務器做了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