JS对象定义和基本方法
JS对象定义和基本方法
- js如何定义对象
用var关键字
JavaScript用一个{…}表示一个对象,键值对以xxx: xxx形式申明,用,隔开。注意,最后一个键值对不需要在末尾加,,如果加了,有的浏览器(如低版本的IE)将报错。
eg:
var 对象名字={
属性
方法
<script>var xiaoming={name:"worker",age:23,salary:7000,};alert(worker.salary+worker.name+worker.age);</script>
};
- 总结:
1、记得花括号后面的分号
2、每个属性用逗号隔开 - 访问属性是通过.操作符完成的,但这要求属性名必须是一个有效的变量名。如果属性名包含特殊字符,就必须用’'括起来:
var xiaohong = { name: '小红','middle-school': 'No.1 Middle School' };
xiaohong的属性名middle-school不是一个有效的变量,就需要用’'括起来。访问这个属性也无法使用.操作符,必须用[‘xxx’]来访问:
xiaohong['middle-school']; // 'No.1 Middle School'
xiaohong['name']; // '小红'
xiaohong.name; // '小红'
实际上JavaScript对象的所有属性都是字符串,不过属性对应的值可以是任意数据类型.
如果访问一个不存在的属性会返回什么呢?JavaScript规定,访问不存在的属性不报错,而是返回undefined:
var xiaoming = {name: '小明'
};
console.log(xiaoming.name);
console.log(xiaoming.age); // undefined
由于js是对象是一个动态类型,你可以自由的给对象添加或删除属性:
eg:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><script>var worker={name:"xiaoming",age:23,salary:7000,'middle-school': 'No.1 Middle School'};// 动态添加属性worker.time;worker.time=20;worker.weight=100;// 删除属性delete worker.weight;// alert(worker.salary+worker.name+worker.age);document.write(worker.time+"<br />");document.write(worker.weight+"<br />");document.write(worker.name+"<br />");document.write(worker['name']+"<br />");document.write(worker['middle-school']+"<br />");document.write(worker.mother);</script>
</head>
<body>
</body>
</html>
- 结果:
20
undefined
xiaoming
xiaoming
No.1 Middle School
undefined
- 如何判断属性是否在对象里面:用in
格式:
‘属性’ in 对象名;是返回true否返回false
不过要小心,如果in判断一个属性存在,这个属性不一定是本身的,它可能是继承得到的: - 若要判断是否是本身的有办法
要判断一个属性是否是xiaoming自身拥有的,而不是继承得到的,可以用hasOwnProperty()方法: - worker.hasOwnOperty(‘name’);
- 如何遍历对象用in
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><script>var worker={name:"xiaoming",age:23,salary:7000,'middle-school': 'No.1 Middle School'};// 动态添加属性worker.time;worker.time=20;worker.weight=100;// 删除属性delete worker.weight;delete worker['weight'];// alert(worker.salary+worker.name+worker.age);document.write(worker.time+"<br />");document.write(worker.weight+"<br />");document.write(worker.name+"<br />");document.write(worker['name']+"<br />");document.write(worker['middle-school']+"<br />");document.write(worker.mother);// 如何遍历对象for(var k in worker){document.write(k+':'+worker[k]);}</script>
</head>
<body>
</body>
</html>
结果:20
undefined
xiaoming
xiaoming
No.1 Middle School
undefinedname:xiaomingage:23salary:7000middle-school:No.1 Middle Schooltime:20