JS對象筆記
#編程範式
##1、命令式
- 面向過程
- 面向對象(OO,Object-Oriented)
##2、聲明式
- DSL:只要預期結果(例如:HTML、css)
- 函數式:沒有副作用,可以解決並發問題
#js中對象
- 原生:符合ES(ECMAScript)規範
- 內置:有ES內部提供的
- 宿主:依賴瀏覽器的對象(BOM)
###類
面向對象的語言一個標誌,是具有相同屬性和方法的對象的集合,是對象的抽象(對象是類的實例)。
###js中沒有類的概念,每個對象都是基於一個原型(原型也是一個對象):
**對象→原型→object→Null**
添加屬性和方法在原型鏈上(對象.prototype可以訪問其原型)後面的對象會“繼承”你添加的屬性和方法
#對象的創建
##對象字面量(語法糖:獨特的,不需要重復的)
例子:
var person={
name:"張三",
age:12,
sayHi:function(){
alert("我是"+this.name+"你好!!");
}
}
像這樣創建多個對象時就會顯得很麻煩,重復創建!!!
##構造函數(類似與類)+原型
例子:
//聲明構造函數
let Student=function(a(參數)···){
this.name=a;
this.sayHi=function(){
alert("我是"+this.name+"你好!!");
}
}
//創建對象
let student1=new(重點) Student("三毛");
訪問原型:
Student.prototype.sayHi=function(){
alert("我是"+this.name+"你好!!");
}
這樣子,以後的對象都會有這個方法!!
##訪問對象屬性
###.運算符
- 對於(.)運算符來說右側必須是一個以屬性名稱命名的簡單標識符,標識符必須直接出現在程序裏,不是數據類型因此無法修改他們。
var author=book.author;
var name=author.name;
###[ ]運算符
- 對於([])運算符來說方括號裏必須是一個計算結果為字符串的表達式,這個字符串就是屬性名字。字符串是js數據類型,所以在程序運行時可以修改和創建他們。
var author=book[‘author‘];
for(let i=0;i<4;i++){
addr=person[i+"name"];
}
//for in 可以用於遍歷出對象的屬性,但是該方法僅僅只會遍歷出可枚舉屬性
由JS核心定義的方法都是不可枚舉的,例如toString()。但是代碼中定義的屬性都是可枚舉的(可通過特殊定義為不可枚舉的)
for(let k in person){
person[k];
}
JS對象筆記