js中繼承的方式並非明確的,這裏介紹經常使用的幾種app
1、對象冒充(構造函數綁定)函數
原理:使用對象冒充繼承基類,實質上是使用call或apply方法改變this 指針的指向this
function Monkey()
{
this.type = "猴子"; } function MagicMonkey() { Monkey.call(this); this.skill = "法術"; }
這種方式能夠實現多重繼承的,固然用apply也是同樣的spa
2、原型鏈prototype
原理:使用prototype屬性,prototype對象是個模版,要實例化的對象都以這個模版爲基礎,總而言之,prototype對象的任何屬性和方法都被傳遞給那個類的全部實例,原型鏈利用這種功能來實現繼承機制。指針
function Monkey() { } Money.prototype.type = "猴子"; Money.prototype.run = function () { alert("我是一個猴子")} function MagicMonkey() { } MagicMonkey.prototype = new Monkey(); var wukong = new MagicMonkey(); alert(wukong.type);//打印出「猴子」 wukong.run();//打印出"我是一個猴子"
注意:給子類加屬性或方法時必須在 MagicMonkey.prototype = new Monkey(); 以後,要不會被覆蓋,只能繼承一個父類code
3、混合模式對象
function Monkey(type) { Money.type = type; } Money.prototype.run = function () { alert("我是一個猴子")} function MagicMonkey(type) { Money.call(this,type);//只能繼承構造函數中的信息,不能繼承原型中的信息 } MagicMonkey.prototype = new Monkey(); var wukong = new MagicMonkey(); alert(wukong.type);//打印出「猴子」 wukong.run();//打印出"我是一個猴子"