// 声明对象的方法 一 (通过常量直接赋值)
var xiaoming = {//声明一个对象(直接通过一个常量xiaoming用{}赋值的方式声明)
name: '小明', //对象的一个属性 属性与属性之间用,逗号分隔。
age: 40, //对象的一个属性
sex: '男', //对象的一个属性
job: function(){//对象的一个方法
alert('小明很会演戏');
return '对象方法返回值';
}
}
alert(xiaoming.name);
// xiaoming.job();//调用小明对象的方法 结果:小明很会演戏
alert(xiaoming.job());//对象方法返回值 结果: 对象方法返回值
//调用的如果是对象的方法属性后面要加()
//声明对象的方法 二 ( 通过new Object() 声明)
var xiaoming = new Object();//另一种声明 一个对象的方法
xiaoming.name = '小明'; //此种方法用.属性 = 属性值。来表示一个 对象的属性
xiaoming.age = 40; //声明xiaoming对象的一个属性
xiaoming.sex = '男'; //声明xiaoming对象的一个属性
xiaoming.job = function(){ //声明xiaoming对象的一个方法
alert('小明很会演戏');
} alert(xiaoming.name);//调用 xiaoming 这个对象的一个属性。 结果:小明
xiaoming.job()//调用 xiaoming 这个 对象的方法 结果:小明很会演戏
//声明对象的方法 三 ( 通过 Object() 声明 省略了new)
var xiaoming = Object(); //第三种声明一个对象 xiaoming 的方式。
xiaoming.name = '小明'; //声明xiaoming对象的一个属性
xiaoming.age = 40; //声明xiaoming对象的一个属性
xiaoming.sex = '男'; //声明xiaoming对象的一个属性
xiaoming.job = function(){// 声明xiaoming 对象的一个方法(功能)
alert('小明很会演戏');
} alert(xiaoming.age); //40 调用xiaoming对象的 一个属性 结果:40
xiaoming.job(); //调用xiaoming 这个对象的 一个方法(功能) 结果:小明很会演戏
//补充 .属性 完全等价于 ['属性']
var xiaoming = Object();
xiaoming['name'] = '小明';
xiaoming['age'] = 40; //xiaoming["age"]与xiaoming.age 效果一样 都是表示 对象的属性,只不过是两种写法而已。
xiaoming['sex'] = '男'
xiaoming['job'] = function(){
alert('小明很会演戏');
} alert(xiaoming['age']);//
xiaoming['job'](); // 小明很会演戏
总结:对象(既能够存储数据,又能够存储函数)
面向对象编程示例:
/* 例子:
有一辆车60km/h,有一条路1000km,问车跑在路上,多久跑完?
*/
// 面向过程编程思想:只关心数学逻辑。
var hour = 1000 / 60;
alert(hour); //16.666666666666668
面向对象的编程思想:将生活逻辑,直接映射到我们的程序中。
1、找实体
车
属性: speed 60km/h
功能: 跑在路上
路
属性: length 1000km
让车跑在路上,跑完以后,告诉我结果。
2、分析实体的属性和功能
3、让实体之间相互作用,最终得出结果。
var car = { //声明一个 car 对象
speed: 60, //声明 car 对象的一个属性speed 速度60
run: function(road){ //声明 car 对象的一个方法(功能),能以60的数度跑在路上
return road.length / car.speed;// 方法的返回值是消耗的的时间
}
} var kuahaidaqiao = {//跨海大桥(假设路是跨海大桥)
length: 1000
} //car对象和kuahaidaqiao对象相互作用(车跑在跨海大桥上)
var hour = car.run(kuahaidaqiao);/*调用car对象的run方法作用在对象kuahaidaqiao上。 此时 car对象的 run方法 的形参 road 就等于对象 kuahaidaqiao 所
以 road.length属性就等于kuahaidaqiao.length属性*/
alert(hour);//16.666666666666668
可见这中编程方式语义化很强。