*****面向对象:
什么是面向对象: 程序中都是用对象来描述现实中的一个事物
什么是对象: 程序中描述现实中一个具体事物的程序结构
包括: 属性和功能
为什么面向对象: 现实中所有数据都必须包含在一个事物中才有意义。
如何创建自定义对象:
封装: 将一个事物的属性和功能集中定义在一个对象中
现实中一个事物的属性,会成为对象的属性
而一个事物的功能,会成为对象的方法
3种:
1. 对象直接量:
var obj={
"属性名":属性值,
...
"方法名":function(参数列表){函数体;return xxx}
}
强调: 其实属性名和方法名的引号可省略
如何访问属性和方法:
obj.属性名 —— 用法同普通变量
等效于:obj["属性名"]
obj.方法名(); —— 用法同普通函数
等效于: obj["方法名"]()
强调: 如果用.就不能加"",
如果用[],就必须加""
强烈建议,用.访问对象的属性和方法。
*****js中一切都是对象,一切对象底层都是hash数组
特殊: 1. 访问到不存在的属性,返回undefined
2. 随时可添加不存在属性
this: 在当前对象的方法内,引用正在调用方法的对象
何时使用: 当前对象的方法内,要访问当前对象自己的属性时,就必须写成this.属性名
何时创建对象: 今后都要先封装对象,再调用对象的属性和方法。
2. 使用new关键字:
var obj=new Object();//创建空对象
obj.属性名=值;
...
obj.方法名=function(){}
其中: new Object();
new可省略,()也可省略,但不能同时省略
*****3. 使用构造函数反复创建多个相同结构的对象
使用直接量创建对象的问题: 仅适合创建一个单独的对象
反复创建多个相同结构的对象,则代码冗余度太高!
不便于维护
解决: 先定义构造函数,再用构造函数反复创建对象
什么是构造函数(constructor):
专门定义一类对象统一结构的函数
如何定义: function 类型名(属性参数列表){
this.属性名=属性参数值;
...
this.方法名=function(){
...
}
}
如何调用构造函数创建对象:
var obj=new 构造函数名(属性值列表);
new的执行过程: 4件事
1. 创建一个空对象: new Object()
2. ?
3. 用新创建的空对象,调用构造函数
|new Object()|
{}.Student()
//Student中的this->正在创建的空对象
4. 返回新对象的地址,保存到左边的变量中
实例化: 用构造函数创建一个新对象
构造函数是一类对象的统一结构
每个对象是构造函数的实例(instance)
遍历一个对象的属性:
for(var key in obj){
//当前属性值:obj[key]
}
什么是面向对象: 程序中都是用对象来描述现实中的一个事物
什么是对象: 程序中描述现实中一个具体事物的程序结构
包括: 属性和功能
为什么面向对象: 现实中所有数据都必须包含在一个事物中才有意义。
如何创建自定义对象:
封装: 将一个事物的属性和功能集中定义在一个对象中
现实中一个事物的属性,会成为对象的属性
而一个事物的功能,会成为对象的方法
3种:
1. 对象直接量:
var obj={
"属性名":属性值,
...
"方法名":function(参数列表){函数体;return xxx}
}
强调: 其实属性名和方法名的引号可省略
如何访问属性和方法:
obj.属性名 —— 用法同普通变量
等效于:obj["属性名"]
obj.方法名(); —— 用法同普通函数
等效于: obj["方法名"]()
强调: 如果用.就不能加"",
如果用[],就必须加""
强烈建议,用.访问对象的属性和方法。
*****js中一切都是对象,一切对象底层都是hash数组
特殊: 1. 访问到不存在的属性,返回undefined
2. 随时可添加不存在属性
this: 在当前对象的方法内,引用正在调用方法的对象
何时使用: 当前对象的方法内,要访问当前对象自己的属性时,就必须写成this.属性名
何时创建对象: 今后都要先封装对象,再调用对象的属性和方法。
2. 使用new关键字:
var obj=new Object();//创建空对象
obj.属性名=值;
...
obj.方法名=function(){}
其中: new Object();
new可省略,()也可省略,但不能同时省略
*****3. 使用构造函数反复创建多个相同结构的对象
使用直接量创建对象的问题: 仅适合创建一个单独的对象
反复创建多个相同结构的对象,则代码冗余度太高!
不便于维护
解决: 先定义构造函数,再用构造函数反复创建对象
什么是构造函数(constructor):
专门定义一类对象统一结构的函数
如何定义: function 类型名(属性参数列表){
this.属性名=属性参数值;
...
this.方法名=function(){
...
}
}
如何调用构造函数创建对象:
var obj=new 构造函数名(属性值列表);
new的执行过程: 4件事
1. 创建一个空对象: new Object()
2. ?
3. 用新创建的空对象,调用构造函数
|new Object()|
{}.Student()
//Student中的this->正在创建的空对象
4. 返回新对象的地址,保存到左边的变量中
实例化: 用构造函数创建一个新对象
构造函数是一类对象的统一结构
每个对象是构造函数的实例(instance)
遍历一个对象的属性:
for(var key in obj){
//当前属性值:obj[key]
}