对象:万物皆对象
JS包含多种对象:①自定义对象、②内置对象、③文档对象、④浏览器对象
一.自定义对象
1.创建对象的三种方法
(1).利用字面量创建对象
<script type="text/javascript">
var stu = {
name:'张三',
age:20,
sex:'男',
fn:function(){
console.log('我是好人')
}
}
console.log(stu); //{name: "张三", age: 20, sex: "男", fn: ?}
</script>
(2).利用new Object创建对象
<script type="text/javascript">
// 利用new Object创建对象
var obj = new Object();
obj.name = '张三';
obj.age = 21;
obj.fn = function(){
console.log('我是好人');
}
console.log(obj); // {name: "张三", age: 21, fn: ?}
</script>
(3.利用构造函数创建对象,不建议使用,太复杂
<script type="text/javascript">
// 利用构造函数创建对象
function obj(name,age,sex){
this.name = name;
this.age = age;
this.sex = sex;
this.fn = function(){
console.log('我是好人');
}
}
var stu = new obj('张三','21','男')
console.log(stu); //obj?{name: "张三", age: "21", sex: "男", fn: ?}
</script>
二.for in 方法
1.for-in 语句用于循环对象属性, 循环中的代码每执行一次,就会对对象的属性进行一次操作
2.ECMAScript对象的属性没有顺序。因此,通过for-in循环输出的属性名的顺序是不可预测的。 具体来说,所有属性都会被返回一次,但返回的先后次序可能会因浏览器而异
<script type="text/javascript">
// 利用构造函数创建对象
var stu = {
name: '张三',
age: 20,
sex: '男',
fn: function() {
console.log('我是好人')
}
}
console.log(stu); //{name: "张三", age: 20, sex: "男", fn: ?}
for (var a in stu) {
console.log(a); //得到对象的属性
console.log(stu[a]); //得到对象属性的值
}
</script>
3.for-in 也可以遍历数组,但不建议使用 for-in 语句来循环数组,因为会存在以下几个问题
1.index索引为字符串型数字,不能直接进行几何运算
2.遍历顺序有可能不是按照实际数组的内部顺序
3.使用for in会遍历数组所有的可枚举属性,包括原型
|