一、简介
在javascript中一切都是对象,没有类的说法。因此,只要知道javascript对象的一切,就好了。对象首字母大写。属性小写。
系统对象:Boolean、Number、String、Date、Array、Function、RegExp;
其他对象:
- 窗口对象:Window,其在加载时自动创建为var window=new Window()。其属性对象(故而小写)document、location、navigator、history、screen、event;
- html Dom对象:Body、Form、Image等
二、对象的创建
- 直接创建:
var stu={sex:"男生",age:22}; //创建两个属性的stu对象
- 调用构造函数创建:
function Stu(sex,age){this.sex=sex;this.age=age;} //定义构造函数
var stu=new stu("男生",22);
- Object创建:
var stu=new Object(); stu.sex="男生"; stu.age=22;
三、对象的属性遍历和删除
遍历:for(var i in stu){.....;}//那么每个i就是stu的属性,可以使用stu[i]或stu.i读属性值;
删除:delete stu.sex;//那么删除属性sex
四、对象的继承和扩展
javascript对象的继承方式很多种。它不同C++、java等基于类的机制。它不是一调用new就占用内存创建新对象实例。它只在调用它的属性时候在创建。javascript原型对象就是C++、java中的基类或超类。常见的继承的方式:
1、直接调用方式
//创建基类
var Person=function(){
this.sleep=function(){
alert("睡觉");
}
}
//创建继承类
var Stu=function(){
Person.call(this); //或者是Person(this),注意就是这个this
this.status="学生"; //内部扩展自己的属性
}
//外部扩展自己的属性
Stu.protoType.name="小王"
2、原型继承
//创建基类
var Person=function(){
this.sleep=function(){
alert("睡觉");
}
}
//创建继承类
var Stu=function(){
this.protoType=new Person(); //或者是 this.protoType=Person.protoType
this.status="学生"; //内部扩展自己的属性
}
//外部继承的属性
Stu.protoType=new Person() //或者是 Stu.protoType=Person.protoType
五、检测小例
function Stu(sex,age){this.sex=sex;this.age=age;} //定义原型对象
var stu=new Stu("男生",22);
stu.name="小王"; //增加自己的属性
//stu.prototype.name="小虎";这样是不对的,会抛出异常,说Stu对象没有定义属性name。因为stu.protoType返回的是最初创建它的对象实例,注意不是Stu。
//给Stu增加属性name
Stu.prototype.name="小虎";
var stu2=new Stu(); //默认的构造函数
var ii=stu.name; //返回"小王"
var iii=stu2.name; //返回"小虎"