JavaScript繼承和object對象
javascript繼承和object對象
對象的一個類可以從現有的類中派生,並且擁有現有的類的方法或是屬性,這個過程叫做繼承。被繼承的類叫基類或是父類,繼承的類叫子類。
一個對象擁有另一個對象的屬性和方法
優點:提高代碼的重用性
提高代碼的可維護性
提高代碼的邏輯性
一、object對象
var obj=new Object();
alert(Object);//function Object() {[native code]}
alert(typeof Object); //function
A、屬性:
1.constructor--對創建對象的函數的引用(指針)
function fun(){}
var aa=new fun();
var bb=new Object();
alert(aa.constructor);//function fun(){}
alert(bb.constructor);//function Object() {[native code]}
2.prototype--對該函數對象的對象原型的引用,是函數對象的默認屬性
(1)對象的共享屬性存放到代碼段中
(2)實現繼承
function fun(){}
var aa = new fun();
alert(aa.prototype);//undefined
alert(fun.prototype);//[object Object]
B、方法
1.hasOwnProperty(property)--判斷對象是否有某個特定屬性
function fun(){
this.name="haha"
}
var aa = new fun();
alert(aa.hasOwnProperty("name"));//true
2.isPrototypeOf(object)--判斷對象是否為另一個對象的原型(用來檢測對象的類型)
var arr=new Array();
alert(Array.prototype.isPrototypeOf(arr));//true
3.運算符instanceof (實例)
var arr=new Array();
alert(arr instanceof Array);//true
二、繼承
A、原型繼承
function person(){
this.name="張三";
this.say=function(){
alert("zhang");
}
}
function student(){}
student.prototype=new person();
var aa=new student();
aa.say();//zhang
B、對象冒充的形式
1.call
obj1.fun.call(obj2,參數1...)讓對象1的方法冒充成對象2的方法
2.apply
obj1.fun.call(obj2,[參數1,參數2....])
function person(){
this.name="張三";
this.say=function(){
alert("zhang");
}
}
function student(){}
var ren=new person();
var aa=new student();
ren.say.call(aa);
aa.say();//zhang
function person(name){
this.name=name;
this.say=function(){
alert("zhang");
}
}
function student(name){
person.apply(this,["zhangsan"]);
}
var aa=new student();
alert(aa.name);//zhangsan
aa.say();//zhang