一.摘要
本文是jQuery系列教程的劇場版, 即和jQuery這條主線無關, 主要介紹大家平時會忽略的一些javascript細節.適合希望鞏固javascript理論知識和基礎知識的開發人員閱讀.
二.前言
最近面試過一些人, 發現即使經驗豐富的開發人員, 對於一些基礎的理論和細節也常常會模糊. 寫本文是因為就我自己而言第一次學習下面的內容時發現自己確實有所收穫和感悟.其實我們容易忽視的javascript的細節還有更多, 本文僅是冰山一角. 希望大家都能通過本文有所斬獲.
三.Javascript物件導向
Javascript是一門物件導向的語言,雖然很多書上都有講解,但還是有很多初級開發人員不瞭解.
建立對象
ps: 以前寫過一篇詳細的建立對象的文章(原型方法, Factory 方法等)但是找不到了, 回頭如果還能找到我再添加進來.下面僅僅簡單介紹.
在C#裡我們使用new關鍵字建立對象, 在javascript中也可以使用new關鍵字:
var objectA = new Object();
但是實際上"new"可以省略:
var objectA = Object();
但是我建議為了保持文法一直, 總是帶著new關鍵字聲明一個對象.
建立屬性並賦值
在javascript中屬性不需要聲明, 在賦值時即自動建立:
objectA.name = "my name";
訪問屬性
一般我們使用"."來分層次的訪問對象的屬性:
alert(objectA.name);
嵌套屬性
對象的屬性同樣可以是任何javascript對象:
var objectB = objectA;
objectB.other = objectA;
//此時下面三個值相當,並且改變其中任何一個值其餘兩個值都改變
objectA.name;
objectB.name;
objectB.other.name;
使用索引
如果objectA上有一個屬性名稱為"school.college", 那麼我們沒法通過"."訪問,因為"objectA.school.college"語句是指尋找objectA的school屬性對象的college屬性.
這種情況我們需要通過索引設定和訪問屬性:
objectA["school.college"] = "BITI";
alert(objectA["school.college"]);
下面幾個語句是等效的:
objectA["school.college"] = "BITI";
var key = "school.college"
alert(objectA["school.college"]);
alert(objectA["school" + "." + "college"]);
alert(objectA[key]);