一:什么是对象
对象是一个具体的事物,js中对象是一组无序的相关属性和方法的集合。可使结构更清晰。
二:创建对象的三种方式
1:利用字面量创建对象
格式:
{
属性;
方法;
}
代码:
<script>
var obj={
name:'张三',
age:'18',
sex:'男',
SayHi:function(){
console.log("hi");
}
}
console.log(obj.name);
console.log(obj['age']);
obj.SayHi();
</script>
效果:
注意事项:
1.属性名:属性值/方法名:方法
2.多个属性或方法中间用逗号隔开
3.obj={…}
4.调用方法
2:利用new object创造对象
格式:
var 对象名=new object()
代码:
<script>
var obj=new Object()
obj.name='libai';
obj.age='18';
obj.SayHi=function(){;
console.log('hi');
}
console.log(obj.name);
console.log(obj['age']);
obj.SayHi('hi');
</script>
效果:
注意事项:
1.等号赋值
2.分号间隔
3.类似于调用函数生成了一个空对象,再创建属性方法并赋值
3:构造函数创建对象
格式:
function 函数名(){
this.属性=值;
this.方法=funciton(){}
}
new 函数名();
代码:
<script>
function A(name,age,sex){
this.name=name;
this.age=age;
this.sex=sex;
this.sing=function(sang){
console.log(sang);
}
}
var ldh=new A('LI','05','男');
console.log(ldh.age);
console.log(ldh.sex);
console.log(ldh.name);
ldh.sing("jajajajaja");
</script>
效果:
注意事项:
1.A()中的为变量,this后面的为属性名
2.函数名首字母要大写
3.构造函数可批量生成对象
4.sing为方法,sing中的jiajiajiajia传到function()的sang中,再通过console打印出来(可以看出属性和方法的传值是分开的,不过可以通过属性给函数赋值)
5.this是指向构造函数创建的对象
三:遍历对象
代码:
<script>
function A(name,music){
this.name=name;
this.song=music;
this.sing=function(song){
console.log(song);
}
}
var a=new A('aaa','gagagaga');
for (var p in a){
/* console.log(p); */
console.log(a[p]);
}
</script>
效果:
注意事项:
1.方法sing不可以直接接收new创建的对象的参数,需要中转(music)
2.console.log(a[p])输出属性值和方法结果,console.log( p )输出属性名和方法名。
3.p接收的为函数名(字符串不是变量),所以不可以使用a.p的方式输出(相当于输出a."…")