ECMAScript5中的物件存取器屬性:getter和setter介紹_javascript技巧
顯然這是一個無關IE(高級IE除外)的話題,儘管如此,有興趣的同學還是一起來認識一下ECMAScript5標準中getter和setter的實現。在一個物件中,操作其中的屬性或方法,通常運用最多的就是讀(引用)和寫了,譬如說o.get,這就是一個讀的操作,而o.set = 1則是一個寫的操作。事實上在除ie外最新主流瀏覽器的實作中,任何一個物件的鍵值都可以被getter和setter方法取代,這稱為「存取器屬性」。
毫無疑問,getter負責查詢值,它不帶任何參數,setter則負責設定鍵值,值是以參數的形式傳遞,在他的函數體中,一切的return都是無效的。和普通屬性不同的是,記憶體屬性在只聲明了get或set時,對於讀和寫是兩者不可兼得的,當它只擁有了getter方法,那麼它僅僅只讀,同樣的,當它只有setter方法,那麼你讀到的永遠都是undefined。如何聲明物件記憶體屬性呢? 最快的途徑就是利用物件字面量的語法來寫了,請看下述一段程式碼:
var oo = {
name : '賢心',
get sex(){
return 'man';
}
};
//顯然這是不允許的,因為賢心並不希望外界去改變他是男性的事實,所以對於sex只設定了只讀功能
oo.sex = 'woman';
console.log(oo.sex); //結果依然是man
有趣的是,這顛覆了我們以往的理解,就是在方法定義時並未用function關鍵字。事實上這裡的get或set,你可以理解為兩種不同狀態下的function:包容的一面(寫),安全的一面(讀),當一種整體被肢解為不同的形態,意味著我們可能不再需要在表現形式上遵循傳統,所以我們並沒有使用冒號將鍵和值分開。那麼,繼續上面的例子。你將如何在記憶體屬性的基礎上變得讀寫兼備呢,也許下面的一段會帶給你答案:
var oo = {
name : '賢心',
get sex(){
if(this.sexx){
return this.sexx;
}else{
return 'man';
}
}, set sex(val){
this.sexx = val;
}
};
//噢,他如此包容,甚至於人們改變他的性別,他也接受
oo.sex = 'woman';
console.log(oo.sex); //結果woman
或許你會覺得這是多此一舉的,因為我們完全可以忽略get和set,直接讓sex方法具備兩種權限。 但之所以我們將get和set單獨拿出來,是為了更清晰地理解ECMAScript5對javascript物件鍵值操作中,一個更嚴謹的詮釋。 當然,在IE污染的中國,新型的主流技術總是顯得格格不入,在實際的專案開發中,也許你永遠不會用到get和set,但誰能保證以後不會呢…

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

本文討論了在瀏覽器中優化JavaScript性能的策略,重點是減少執行時間並最大程度地減少對頁面負載速度的影響。

本文討論了使用瀏覽器開發人員工具的有效JavaScript調試,專注於設置斷點,使用控制台和分析性能。

本文說明瞭如何使用源地圖通過將其映射回原始代碼來調試JAVASCRIPT。它討論了啟用源地圖,設置斷點以及使用Chrome DevTools和WebPack之類的工具。

本文探討了Java收藏框架的有效使用。 它強調根據數據結構,性能需求和線程安全選擇適當的收集(列表,設置,地圖,隊列)。 通過高效優化收集用法

掌握了入門級TypeScript教程後,您應該能夠在支持TypeScript的IDE中編寫自己的代碼,並將其編譯成JavaScript。本教程將深入探討TypeScript中各種數據類型。 JavaScript擁有七種數據類型:Null、Undefined、Boolean、Number、String、Symbol(ES6引入)和Object。 TypeScript在此基礎上定義了更多類型,本教程將詳細介紹所有這些類型。 Null數據類型 與JavaScript一樣,TypeScript中的null

本教程將介紹如何使用 Chart.js 創建餅圖、環形圖和氣泡圖。此前,我們已學習了 Chart.js 的四種圖表類型:折線圖和條形圖(教程二),以及雷達圖和極地區域圖(教程三)。 創建餅圖和環形圖 餅圖和環形圖非常適合展示某個整體被劃分為不同部分的比例。例如,可以使用餅圖展示野生動物園中雄獅、雌獅和幼獅的百分比,或不同候選人在選舉中獲得的投票百分比。 餅圖僅適用於比較單個參數或數據集。需要注意的是,餅圖無法繪製值為零的實體,因為餅圖中扇形的角度取決於數據點的數值大小。這意味著任何占比為零的實體
