JavaScript面向对象
对象是包含相关属性和方法的集合体
什么是面向对象
面向对象是一种编程思想
通过叫原型的方式来实现面向对象编程
创建对象
自定义对象
基于Object对象的方式创建对象
语法:var 对象名称=new Object();
示例:var person=new Object(); //创建对象
person.name="小明"; //创建对象属性
person.showName=function(){ alert(this.name); } //创建对象方法
person.showName(); //调用对象方法
使用字面量赋值方式创建对象
示例:var person={
name:"小明",
showName:function(){ alert(this.name); }
}
person.showName();
内置对象
String对象
Date对象
Array对象
构造函数和原型对象 --返回布尔值
作用:使用接口不需要创建很多对象,减少产生大量的重复代码
示例:function Person(name,sex,age,hobby){
this.name=name;
this.sex=sex;
this.age=age;
this.hobby=hobby; //创建构造函数
this.showName=function(){
alert(this.name);
}
}
//使用构造函数创建对象
var person1=new Person ("小明","男",18,"看书、看电影、健身、购物等")
person1.showName();
}
Person.prototype.name="小明";
var person1=new Person();
var person2=new Person();
person1.name="小花";
alert(person1.name);
alert(person2.name);
继承
原型链
一个原型对象是另一个原型对象的实例
相关的原型对象层递进,构成了实例与原型的链条,就是原型链
示例:
function Humans(){
this.foot=2;
}
Humans.prototype.getFoot=function(){
return this.foot;
}
function Man(){
this.head=1;
}
Man.prototype=new Humans(); //继承了Humans
Man.prototype.getHead=function(){
return this.head;
}
var man1=new Man();
alert(man1.getFoot()); //2
alert(man1 instanceof Object); //true
alert(man1 instanceof Humans); //true
alert(man1 instanceof Man);
对象继承
示例:
function Humans(){
this.clothing=["trousers","dress","jacket"];
}
function Man(){ }
//继承了Humans
Man.prototype=new Humans();
var man1=new Man();
man1.clothing.push("coat");
alert(man1.clothing);
var man2=new Man();
alert(man2.clothing);
借用构造函数
apply([thisObj [,argArray]])
call([thisObj[,arg1[,arg2[, [,argN]]]]])
示例:
function Humans(name){
this.name=name;
}
function Man(){
Humans.call(this,"mary"); //继承了Humans,同时还传递了参数
this.age=38; //实例属性
}
var man1=new Man();
alert(man1.name); //输出mary
alert(man1.age); //输出38
组合继承 -也叫做伪经典继承