首頁  >  文章  >  web前端  >  JS繼承用法實例分析_javascript技巧

JS繼承用法實例分析_javascript技巧

WBOY
WBOY原創
2016-05-16 16:15:33909瀏覽

本文實例分析了JS繼承的用法。分享給大家供大家參考。具體分析如下:

繼承 : 子類別不會影響父類,子類別可以繼承父類別的一些功能 ( 程式碼重複使用 )

屬性的繼承 : 呼叫父類別的建構子 call

方法的繼承 : for in :  拷貝繼承 (jquery也是採用拷貝繼承extend)

1. 拷貝繼承

function Person (name){
 this.name = name;
}
Person.prototype.showName =function (){
 alert(this.name);
}
function Worker(name,job){
 Person.call(this,name);
 this.job = job;
}
extend(Worker.prototype, Person.prototype);
//如果用Worker.prototype=Person.prototype的话,会造成引用相同的问题
function extend(obj1,obj2){
 for(var i in obj2){
   obj1[i] = obj2[i]
 }
}
var coder = new Worker('magicfly','frontEnd');
coder.showName();

2. 類別繼承

function Person (name){
 this.name = name;
}
Person.prototype.showName =function (){
 alert(this.name);
}
function Worker(name,job){
 Person.call(this,name);
 this.job = job;
}
//Worker.prototype = new Person();
// 这样继承会继承父级的不必要属性 
function F(){};
F.prototype = Person.prototype;
Worker.prototype = new F();
//通过建立一个临时构造函数来解决 ,也称为代理函数

var coder = new Worker('MAGICFLY','START');
coder.showName();

3. 原型繼承

var a = {
  name : '小明'
};
var b = cloneObj(a);
b.name = '小强';
//alert( b.name );
alert( a.name );
function cloneObj(obj){
  var F = function(){};
  F.prototype = obj;
  return new F();
}

適用情況

拷貝繼承:  通用型的  有new或沒有new的時候都可以
類別繼承:  new建構子
原型繼承:  無new的物件

希望本文所述對大家的javascript程式設計有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn