JavaScript 對象和麪向對象概述(自定義對象)


1. JS中的對象(Object)
創建空白對象:
var  obj = new Object();

對象裏面的變量叫屬性,對象外面的變量叫變量
對象裏面的函數叫方法,對象外面的函數叫函數
但前提是要給對象綁定屬性和方法



2. 構造函數(就是爲了創建對象實例)
① 可以創建對象實例的函數,爲新對象進行初始化(設置對象的屬性)。
② 區別於普通函數,首字母大寫



3. 創建自定義對象
創建單個自定義對象:
//創建單個自定義對象
var stu = new Object();

//爲該對象綁定屬性
stu.name = "楊哈哈";
stu.age = 18;
stu.gender = "男";

//爲該對象綁定方法
stu.study = function () {
    console.log("我正在學習!");
}


創建多個自定義對象:
函數是可以重複執行的代碼塊,把創建對象的方法封裝到函數中,然後把變化的值設計成參數
function createStu(name,age){
    //每次調用函數,創建一個新的對象
    var stu = new Object();
    stu.name = name;
    stu.age = age;
    stu.study = function () {
        //this代表函數的調用者
        console.log(this.name + ":我正在學習");
    }
    return stu;
}


構造函數法創建自定義對象:
function Stu(name,age){
   this.name = name;
   this.age = age;
   this.study = function () {
        console.log(this.name + ":我正在學習");
   }
}

var aaa = new Stu("carrie",18);

console.log(typeof aaa);//Object類型,而非Stu類型,因爲js是基於對象的語言,而非面向對象的語言,所有新對象實際上在底層都是Object類型
console.log(aaa);
console.log(aaa.name);
console.log(aaa.age);
aaa.study();

This
① this只出現在函數中。(arguments也只出現於函數中)
② 誰調用函數,this就指的是誰。
③ new People();   People中的this代指被創建的對象實例。
new
① 開闢內存空間,存儲新創建的對象( new Object() )
② 把this設置爲當前對象
③ 執行內部代碼,設置對象屬性和方法
④ 返回新創建的對象




4. 對象字面量

var obj = {aaa: 1, bbb: 2, ccc: 3, ddd: 4};




5. json

var json = {“aaa”: 1,“bbb”: 2,“ccc”: 3,“ddd”: 4}

- Json由{ }和key:value以及逗號三部分組成(只有一個鍵值對key:value時,可以沒有逗號)。
- 對象字面量定義方法和json很像,只有一點不同,json的key要求必須加“”
- json的取值有兩種方式,json.屬性名,或 json["屬性名"]
- json中每個屬性的屬性值如果是數字,就是number類型,如果是字符串,就是string類型
- 如果調用一個函數後,可以使用.屬性的方法獲取一個值,那麼他的返回值,一定是一個json




6. for...in...

var json = {“aaa”: 1,“bbb”: 2,“ccc”: 3,“ddd”: 4}
for(var key in json){
    console.log(key);//key代表對象的所有屬性
    console.log(json[key]);//json[key]代表對象的所有屬性值
}

注意:
如果一個對象的屬性都是數值而且有length屬性,遍歷的時候使用 for 循環和 for in 的方式都可以;
如果一個對象的屬性都是單詞不是數值,在遍歷時只能通過 for in 的方式。




7. 參數和傳值問題
① 簡單類型數據做參數,函數內部對參數的修改不影響外部變量。
簡單類型傳數值
② 複雜類型數據做參數,函數內部對參數的修改會影響外部變量。
複雜類型傳地址








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章