对象部分
Object 是一个无序的集合,可以存放任意类型对象,所有其他对象都继承自这个对象。
- 创建Object类型有两种,一种是使用new运算符,一种是字面量表示法。
a. 使用new运算符创建Object
1 | var obj = new Object();//注意大写,也可以直接写成Object() |
注意,通过new Object() 的写法生成新对象,与字面量的写法 obj = {} 是等价的。
b. 使用字面量方式创建:1
2
3
4var obj = {
name : 'trigkit4',
age : 21
};//分号最好加上
在使用字面量声明Object对象时,不会调用Object()构造函数(FF除外)
对象只是一种特殊的数据。对象拥有属性和方法。 JavaScript 是面向对象的语言,但 JavaScript 不使用类。 JavaScript 基于 [prototype][1],而不是基于类的。
JavaScript面向对象三大特征
封装:不考虑内部实现,只考虑功能使用
继承:从已有对象上,继承出新的对象
多态:所谓多态,就是指一个引用在不同情况下的多种状态,
1.封装
封装就是要把属于同一类事物的共性(包括属性与行为)归到一个类中,以方便使用.比如人这个东东,可用下面的方式封装
封装的好处:
封装保护了内部数据的完整性;
封装使对象的重构更轻松;
弱化模块间的耦合,提高对象的可重用性;
有助于避免命名空间冲突;
构造函数模式
为了解决从原型对象生成实例的问题,Javascript提供了一个构造函数(Constructor)模式。所谓”构造函数”,其实就是一个普通函数,但是内部使用了this变量。对构造函数使用new运算符,就能生成实例,并且this变量会绑定在实例对象上。比如boy和girl的原型对象现在就可以这样写:1
2
3
4
5
6<script type="text/javascript">
function Person(name,age){
this.name = name;
this.age = age;
}
</script>
我们现在就可以生成实例对象了。1
2
3
4
5
6
7<script type="text/javascript">
var boy = new Person("小明",12);
var girl = new Person("小红",10);
alert(boy.name); //小明
alert(boy.age); //12
</script>
这时boy和girl会自动含有一个constructor属性,指向它们的构造函数。
1
2
3alert(boy.constructor == Person); //true
alert(girl.constructor); //输出整串构造函数代码,自己试试吧
对象字面量
对象字面量是用于创建包含大量属性的过程,如下所示:1
2
3
4
5
6
7
8<script type="text/javascript">
var company = {
name : "Microsoft",
ages : 39,
employees : 99000,
CEO : "Nadella"
};
</script>
这里需要注意的是属性和属性值以冒号(:)隔开;多个属性用逗号(,)隔开。对象字面量亦可以定义方法,只需在这个对象的属性上写上function就行,这是一个匿名函数,调用它只需要写上他的方法名()即可。1
2
3
4
5
6
7
8
9
10<script type="text/javascript">
var dog = {
name:"husky",
age:2,
run:function(){
return "123";
}
}
alert(dog.run());//如果输入dog.run,那么会弹出它后面的function部分的代码
</script>
数组部分
Array 对象:提供对创建任何数据类型的数组的支持。
定义:var arr = [2,3,45,6]; var arr = new Array(2,4,5,7)
两者是定义没有任何差别,[]的性能高,因为代码短。
使用数组和对象字面量:var aTest = [];创建数组时,使用数组字面量是个好选择;类似的,对象字面量也可用于节省空间。以下两行是相等的,但是使用对象字面量的更加简短:1
2var oTest = new Object; //尽量不用
var oTest = { }; //最好的选择,或者var 0Test = [ ];