![](/img/trans.png)
[英]How to access from 'private method' to 'public variable', in Javascript class
[英]Why public method cannot access private member when defined within the class scope
在一些javascript視頻教程( JavaScript中的私有成員 )中,對什么是私有,特權成員和公共成員進行了解釋,並顯示了以下代碼示例:
function Emloyee(firstName, lastName){
// Private field
var privateFullName;
// Public fields
this.firstName = firstName;
this.lastName= lastName;
// Private function
var privateGetFullName = function(){
privateFullName = firstName + " " + lastName;
return privateFullName;
}
// Privileged function
this.privilegedGetFullName = function(){
return privateGetFullName();
}
// Public function
Employee.prototype.publicGetFullName = function(){
return this.privilegedGetFullName ();
}
}
據說公共方法可以調用特權方法,但不能調用私有方法。 如果將在此示例中定義為內部函數的公共函數定義在該類示例之外,則我會對此表示同意,但是在本示例的情況下,它是在存在私有成員的類范圍內定義的,因此為什么不使用該公共函數私有成員是否像關閉一樣有價值?
我還要提到的是,在我觀看本教程之前,在本示例中,它們被稱為特權方法和公共方法,它們既相同又只是公共的(我不知道第一個應稱為特權方法),我們稱其為擴展方法。該類原型作為公共函數,我只是曾經知道必須在已經定義的類中添加帶有this關鍵字的方法時使用原型。
公共方法Employee.prototype.publicGetFullName
必須在Employee
構造函數之外定義。
當您在內部使用它並引用私有函數時,它將在每個實例中重新定義,因此它將返回上一個創建實例的“私有”數據,而不是此實例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.