JS中的對象


對象
JavaScript 提供多個內建對象,比如 Object、String、Date、Array 等等,此外 JavaScript 允許自定義對象。

對象只是帶有屬性和方法的特殊數據類型。

1.創建 JavaScript 對象
1.1 通過new關鍵字創建對象

var obj = new Object();
// 添加屬性
obj.name = "小明";
// 添加方法
obj.sleep = function () {
    console.log(this.name + "在睡覺");
};


1.2 通過字面量創建對象

var obj = {
    name : "xiaoming",
    age : "18",
    show : function (girlfriend) {
        console.log(this.name + "的女朋友是" + girlfriend);
    }
};


注意: 屬性名字可以加雙引號也可以不加雙引號。

1.3 通過構造函數創建對象

// 注意:此處建議方法名首字母大寫
function Person(name, age) {
    this.name = name;
    this.age = age;
    this.say = function(name) {
        console.log("你好: " + name + "!");
    };
}

// 創建兩個Person對象
var person1 = Person("ande", 18);
var person2 = Person("dahuan", 28);


2.訪問對象的屬性
2.1 通過點語法訪問對象屬性

var obj = {
    name : "xiaoming",
    age : 18,
    show : function (girlfriend) {
        console.log(this.name + "的女朋友是" + girlfriend);
    }
};
// 訪問屬性值
console.log(obj.name);   // 輸出:"xiaoming"
console.log(obj.age);    // 輸出:18


2.2 通過中括號法訪問對象屬性
中括號法可以用變量作為屬性名,而點方法不可以;
中括號法可以用數字作為屬性名,而點語法不可以。

var obj = {
    name : "xiaoming",
    age : 18,
    110 : "110",
    show : function (girlfriend) {
        console.log(this.name + "的女朋友是" + girlfriend);
    }
};
// 訪問屬性值
console.log(obj["name"]);   // 輸出:"xiaoming"
var age = "age";
console.log(obj[age]);      // 輸出:18
console.log(obj["110"]);    // 輸出:"110"

 


3.訪問對象的方法

var obj = {
    name : "xiaoming",
    age : 18,
    show : function (girlfriend) {
        console.log("xiaoming的女朋友是" + girlfriend);
    },
    sleep : function () {
        console.log("xiaoming在睡覺")
    }
};
// 訪問對象方法
obj.show("小紅");
obj.sleep();

4. this關鍵字
this是JavaScript語言的一個關鍵字。

它代表函數運行時,自動生成的一個內部對象,只能在函數內部使用。

隨着函數使用場合的不同,this的值會發生變化。但是有一個總的原則,那就是this指的是,調用函數的那個對象。

4.1 純粹的函數調用
這是函數的最通常用法,屬於全局性調用,因此this就代表全局對象(Global)。

var index = 0;
function fun() {
    // 此處的this代表就是全局對象window
    this.index = 1;
}
fun();
console.log(index);   // 輸出:1


因為我們使用window.fun()來調用函數,調用函數的那個對象是window,所以this指向的也是window。

4.2 作為對象方法的調用
作為對象方法的調用,this 指向當前實例對象。

var point = {
    x : 0,
    y : 0,
    moveTo : function(x, y) {
        this.x += x;
        this.y += y;
    }
};

point.moveTo(10, 10);
console.log("x: " + point.x + " y: " + point.y);  // 輸出:x: 10 y: 10

因為使用point.moveTo()來調用函數,調用函數的那個對象是point,所以this指向的也是point。

4.3 作為構造函數調用
所謂構造函數,就是通過這個函數生成一個新對象(object),這時this就指這個新對象。

function Student() {
    this.name = "ande";
}
var stu = new Student();
console.log(stu.name);        // 輸出:"ande"

5. for…in 循環
for…in 語句用於對數組或者對象的屬性進行循環操作。

for … in 循環中的代碼每執行一次,就會對數組的元素或者對象的屬性進行一次操作。

【語法格式】

for (變量 in 對象) {
// 在此執行代碼
}

for (變量 in 對象) {
    // 在此執行代碼
}

“變量”用來指定變量,指定的變量可以是數組元素,也可以是對象的屬性。

// 1、遍歷對象
var obj = {
    name : "xiaoming",
    age : 18,
    sex : "男",
    tel : "18911450210"
};
// for...in循環遍歷
for(var attr in obj) {
    if (typeof obj[attr] != "function") {
        console.log("屬性操作:" + obj[attr]);
    }
}
// 2.遍歷數組
var arr = ["11", "22", "33", "44", "55"];
for(var attr in arr) {
    console.log(arr[attr]);
}

6. eval()函數
eval()函數會將傳入的字符串當做JavaScript代碼進行執行,例如:eval(“2+3”) 返回的是5。。

把JSON字符串轉化為js認識的對象:

var json = '[{"name" : "dahuan", "age" : 18}, {"name" : "xiaohuan", "age" : 20}]';
// 把json字符串轉化為js對象
var arr = eval(json);
// 對數據做解析
for (var i = 0; i < arr.length; i++) {
    console.log("name: " + arr[i].name);
    console.log("age: " + arr[i].age);
}

注意:eval()是一個危險的函數,從安全性來講不建議使用!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM