標籤:之間 row 迴圈 class 異常 rip 初學 this指標 擷取
物件導向是一種對現實世界理解和抽象的方法。就是很抽象吧。當然,JavaScript·中也有物件導向。
1、建立對象的方法
(1)常規建立對象的方式
var o = new Object();
這樣就建立了一個對象,不過,對象也要分類型(當然類型是靠自己定義的),這樣建立的對象,都是object類型的,使用中,難以區分不同類型的對象。
(2)通過建構函式來建立對象
function Person(name){ this.name=name; //添加屬性
……
}
這樣就建立了一個person對象,其中,包含著person對象的屬性,其實和c#都差不多
(3)通過對象字面量建立對象
var p1 = { name: ‘name‘, email: ‘163.com‘,
Func: function () { alert(‘this.age); } };
對象可以看作是一個索引值對集合,可以用 for……in迴圈遍曆(for in迴圈相當於c#中的foreach迴圈)
2、原型對象
原型對象:一個難以理解的概念,大概就是一個 prototype 定義的一個_proto_屬性,來指向上一層對象,具體說明:http://www.cnblogs.com/shuiyi/p/5305435.html
關鍵是原型對象的作用:
-->建立原型鏈,通過原型鏈去尋找上一層的屬性,或者方法。
原理:當擷取一個對象的屬性時,系統首先會檢測對象是否直接包含這個屬性,不包含再去原型中尋找這個屬性
這樣,就實現了繼承,在js中,沒有類的概念,繼承是通過對象與對象之間實現的
var p1=new Person(); Man.prototype=p1; //實現了Man繼承Person
3、閉包
概念:在一個函數內部又定義一個函數,內建函式能訪問外部函數範圍範圍內的變數,這個內建函式就叫做閉包
作用:改變變數的範圍類比物件導向
4、this指標
this在JavaScript中,使用猶為重要。
this指向的對象總結:
(1)在全域執行環境中使用this,就是為window對象
(2)如果函數沒有明顯的作為非window對象的屬性,而只是定義了函數,不管這個函數是不是定義在另一個函數中,這個函數的this仍然表示window對象(就是因為沒有註冊給對象,所以才表現出window屬性)
如果函數顯式地作為一個非window對象的屬性,那麼函數中的this就表示這個對象
(3)當通過new運算子來調用函數時,函數被當做一個建構函式,this指向建構函式建立出來的對象
5、Error對象
var custError = new Error(‘自訂錯誤‘); //建立error類的執行個體 throw custError; //拋出異常
當然,JavaScript對象中還有一大堆的對象,還有方法,不過初學基本是涉及不到的,就瞭解到基本的一些。
JavaScript物件導向