对象
一,简介
对象属于一种复合型数据类型,在对象中可以保存多个不同数据类型的属性。
二,对象分类
1,内建对象:由ES标准中定义的对象,在任何的ES的实现中都可以使用。
2,宿主对象:由JS的运行环境提供的对象,主要指浏览器提供的对象。
3,自定义对象:由开发人员自己创建的对象。
三,创建对象
使用new关键字调用的函数,是构造函数constructor,构造函数是专门用来创建对象的函数。
语法:var 对象 = new 函数;
示例:
var obj = new Object();
四,添加属性
在对象中保存的值被称为属性
语法:对象.属性名 = 属性值;
示例:obj.name = “张无忌”;
五,调用属性
语法:对象.属性名
示例:
console.log(obj.name);
六,修改属性
新属性覆盖旧属性
语法:
对象.属性名 = 新属性;
示例:
obj.name = "张芷若";
七,删除属性
语法:
delete 对象.属性名
示例:
delete obj.name;
八,工厂方法创建对象
利用工厂方法创建对个对象
示例:
function createPerson(name,age,sex){
//创建新对象
var obj = new Object();
//向对象添加属性
obj.name = name;
obj.age = age;
obj.sex = sex;
sayName:function(){
alert(this.name );
}
//将新对象返回
return obj;
}
var obj1 = createPerson("wa",18,"男");
var obj2 = createPerson("lu",20,"女");
九,构造函数创建对象
使用构造函数创建的对象,可以区分不同对象的类型
构造函数执行流程:
1,立即创建一个新对象
2,将新建的对象设置为函数中this,在构造函数可以使用this来引用新建对象
3,逐行执行函数中的代码
4,将新建的对象作为返回值返回
示例:
function Person(name,age,sex){
this.name = name;
this.age = age;
this.sex = sex;
}
var per = new Person();
十,构造函数/原型方式
使用这种混合构造方法在创建对象和类具有灵活性。其原理为:该方式对象的所有非函数属性使用构造函数定义,对象的函数属性使用原型方式定义。
示例:
//构造函数内定义属性
function Car(sColor,iDoors,iMpg){
this.color = sColor;
this.doors = iDoors;
this.mpg = iMpg;
this.drivers = new Array("Mike","Sue");
}
//原型定义函数方法
Car.prototype.showColor = function(){
alert(this.color);
}
十一,动态原型方法
该构造方式与构造函数/原型方式的基本思想相同,不同的方面在于赋予对象方法的位置发生变化,其原理与面向对象语言Java构造方法类似。
示例:
function Car(sColor,iDoors,iMgp){
this.color = sColor;
this.doors = sDoors;
this.mgp = iMgp;
this.drivers = new Array("Mike""Sue");
if(typeof Car._initialized == "underfined"){
Car.prototype.ShowColor = function(){
alert(this.color);
}
Cae._initialized = ture;
}
}
该构造方式中的"typeof Car._initialized"的部分最为关键,它来判断是否已给原型赋予了任何方法,该方法只创建赋值一次。