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