javascript对象的继承和object对象
对象的一个类可以从现有的类中派生,并且拥有现有的类的属性或者方法,这个过程叫做继承。
被继承的类叫做父类或是基类,继承的类叫做子类。
(一个对象拥有另一个对象的属性和方法)
优点:提高代码的重用性、可维护性、逻辑性
一、Object对象
document.write(Object); //function Object() { [native code] }
document.write(typeof Object); //function
var obj=new Object();
属性:
1.constructor:创建对象的函数的引用(指针)。
var obj=new Object();
document.write(obj.constructor); // function Object() { [native code] }
2.prototype:对函数对象的对象原型的引用。是函数对象的默认属性。
var obj=new fun();
function fun() {
}
document.write(obj.prototype); //输出 undefined
document.write(fun.prototype); //输出 [object Object]
A.可将对象的共享属性存放到代码段当中
B.可以实现继承
方法:
A.hasOwnProperty(property)
判断对象是否具有某个属性
var obj=new fun();
function fun() {
this.name="属性";
}
document.write(obj.hasOwnProperty("name")); //输出 true
B.isPrototypeOf(obj)
判断该对象是否是另一个对象的原型。(用来检测对象的类型)
var arr=new Array();
document.write(Array.prototype.isPrototypeOf(arr)); //输出 true
C.instanceof
运算符
var arr=new Array();
document.write(arr instanceof Array); //输出 true
二、继承
1.原型继承
function Person() {
this.name="名字";
this.say=function(){
document.write(this.name);
};
}
function Teacher() {
}
Teacher.prototype=new Person();
var zhangsan=new Teacher();
zhangsan.say(); //输出 名字
2.对象冒充的形式继承
2.1call
object.function.call(obj2,参数1,参数2...)
让对象1的方法冒充成对象2的方法
function Person() {
this.name="名字";
this.say=function(){
document.write(this.name);
};
}
function Teacher() {
this.name="李四";
}
var people=new Person();
var zhangsan=new Teacher();
people.say.call(zhangsan);
输出 李四
function Person() {
this.name="名字";
this.say=function(){
document.write(this.name);
};
}
function Teacher() {
window.Person.call(this);
}
var zhangsan=new Teacher();
document.write(zhangsan.name);
zhangsan.say();
输出 名字名字
function Person(name) {
this.name=name;
this.say=function(){
document.write(this.name);
};
}
function Teacher() {
window.Person.call(this,"老师");
}
var zhangsan=new Teacher();
zhangsan.say();
输出 老师
2.apply
object.function.apply(obj2,[参数1],[参数2]...)
function Person(name) {
this.name=name;
this.say=function(){
document.write(this.name);
};
}
function Teacher() {
window.Person.apply(this,["老师"]);
}
var zhangsan=new Teacher();
zhangsan.say();
输出 老师
网友评论