Skip to Content
JavaScript 設計模式
book

JavaScript 設計模式

by Stoyan Stefanov
March 2012
Intermediate to advanced
244 pages
4h 42m
Chinese
GoTop Information, Inc.
Content preview from JavaScript 設計模式
物件建立模式
   
95
然而這些 private 變數可被 public 方法存取:這些方法定義在建構式中,而公開為回傳物
件的一部分。讓我們來看個範例,其中
name
是個 private 成員,在建構式外無法被存取:
[92]
如你所見,在 JavaScript 中實現隱私權很容易。你需要做的就只是將你想要保持 private
資料用函式包起來,且確保它是函式的區域變數,意思是不要讓它在函式外也可以存取。
特權方法
特權方法privileged methods)的概念並未涉及任何特殊的語法;它只是存取 private 成員
public 方法的一個名字,也因此有更多的權限。
在前面的範例中,
getName()
就是個特權函式,因為它對 private 屬性
name
有「特別」的
存取權。
隱私權錯誤
關於隱私權,你需要考慮一些邊緣案例:

某幾版早期的 Firefox 允許
eval()
接受第二個參數,此參數是一個內容物件
context object),讓你可以溜進函式的 private 範圍中。 類似的,Mozilla Rhino
__parent__
屬性也允許你存取 private 範圍。這些邊緣案例已不在今日流行的瀏覽器
中出現。

當你直接從特權函式回傳一個 private 變數,且這個變數是個物件或陣列時,外圍的
程式碼仍可以修改 private 變數,因為傳遞的是變數的參考。
private 成員
public 方法
name 會回傳 undened ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

JavaScript 之美

JavaScript 之美

Anton Kovalyov
重構 JavaScript

重構 JavaScript

Evan Burchard

Publisher Resources

ISBN: 9789862764190