1. 程式人生 > >javaScript中私有屬性和方法

javaScript中私有屬性和方法

javaScript並沒有特殊的語法來表示私有、保護、或公共屬性和方法,在這一點上與

java或其他語言是不同的,JavaScript中所有物件的成員是公用的:
var myobj={
mypop:1,
getProp:function(){
return this.myprop;
}
};
console.log(myobj.myprop); // ‘myprop’是公有可訪問的
console.log(myobj.getProp()); //getProp()也是公有的,可訪問的

當使用建構函式建立物件時也同樣如此,即所有的成員仍然都是公共的。

function Gadget(){
this.name=’iPod’;
this.stretch =function(){
return ‘iPad’;
};
}
var toy = new Gadget();
console.log(toy.name); //name是公有的
console.log(toy.stretch()); //stretch()是公有的

雖然javaScript語言中並沒有用於私有成員的特殊語法,但是可以使用閉包來實現這種

功能。建構函式建立了一個閉包,而在閉包範圍內部的任意變數都不會暴露給建構函式

以外的程式碼。然而,這些私有變數仍然可以用於公共方法中;即定義在建構函式中,且

作為返回物件的一個部分暴露給外部的方法。
如下面示例:
function Gadget(){

//私有變數
var name =’iPod’;
//公有函式
this.getName = function(){
return name;
} ;
}
var toy = new Gadget();
//name是undefined的,是私有的
console.log(toy.name);
//公有方法訪問
console.log(toy.getName()); //輸出Ipod

如上面例子,很容易在Javascript實現私有性。需要做的只是在函式中將需要保持為私有屬性的資料包裝起來,並確保它對函式來說是區域性變數,這意味著外部函式不能訪問它