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了。