JS中的對象

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

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

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);
    }
};


注意: 屬性名字能夠加雙引號也能夠不加雙引號。this

1.3 經過構造函數建立對象spa

// 注意:此處建議方法名首字母大寫
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 經過點語法訪問對象屬性code

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.訪問對象的方法blog

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語言的一個關鍵字。ip

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

隨着函數使用場合的不一樣,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 對象) {
    // 在此執行代碼
}

「變量」用來指定變量,指定的變量能夠是數組元素,也能夠是對象的屬性。

// 一、遍歷對象
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()是一個危險的函數,從安全性來說不建議使用!

相關文章
相關標籤/搜索