JS对象的定义有两种方法,对象的属性使用键值对赋值(let和var都是用作定义变量,有一定的区别,越来越多的公司开始禁止使用var,因为var的是函数作用域,会出现很多意想不到的bug):
let 对象名 = new Object(); let 对象名 = {} // 推荐使用
示例:
let teacher = { name:'苍老师', age:18, height:155, weight:90, print:function(){ console.log(this.name); }, boyFriends:['张三','李四'], husband:{ name : '张三', age : 60, }, };
上面的属性中没有sanwei,这个属性。如果想要添加一个属性叫sanwei该怎么办呐。
直接赋值就行了!如:
teacher.sanwei = 90;
console.log(teacher.sanwei);
可以直接添加一个sanwei属性,同时直接赋值90给teacher.sanwei。
如何删除一个属性呢?delete teacher.sanwei或者delete teacher['sanwei']
如何遍历teacher这个对象中的属性呢?使用for in
如:
for (let key in teacher){ console.log(key); } console.log('----------'); for(let key in teacher){ console.log(key+':'+teacher[key]); } console.log('--------');
在teacher这个对象中,定义了一个print方法,使用了this指针
如果再定义一个对象
如:
let teacher1 = { name:'袁老师', age : 18, };
并赋值一下:
teacher1.print = teacher.print; // this指向当前对象,指向teacher1 teacher1.print();
teacher1调用print方法打印的就是当前对象的属性了。
如果使用一个变量来存放呢?例如:
let print = teacher.print;
运行之后,不会打印出任何东西。
因为默认的对象是window对象,window对象没有name这个属性
如果添加一个
window.name = '调用了窗口对象';
就会正常输出name了。