閉包產生私有化變數,防止命名空間的汙染

2021-10-24 13:17:31 字數 1604 閱讀 5556

>

/*下面三個函式分別和deng形成了閉包,共同用deng的閉包

preparewife這個變數能用,但是無法訪問,因為它不是物件生成的東西,是物件和原有空間生成的閉包,這就是私有化變數

*/function

deng

(name,wife)

this

.changepreparewife

=function

(target)

this

.saypraprewife

=function()

}var deng=

newdeng

('deng'

,'xiaoliu'

)script

>

>

var name=

'bcd'

var init=

(function()

//留出乙個介面 傳給init

return

function()

}())

init()

;//執行的結果abc不是bcd 因為形成了閉包,閉包變數私有化,不汙染全域性變數

/*入口函式取名為init,約定俗成的用法*/

var initdeng=

(function()

return

function()

}())

script

>

>

function

person

(name)

offer:function(){}}*/

var money =

100;

//不給顯示出來,只能通過方法來改,這就是私有化屬性 外部不能訪問 在方法的作用域鏈裡

this

.name = name;

this

.makemoney

=function()

this

.offer

=function()

/* return this; 這樣就產生了閉包

*/}var person =

newperson()

script

>

>

function

person

(name,age,***)

this

.say=sss;

}var operson=

newperson()

; operson.

say();

//1 operson.

say();

//2var operson1=

newperson()

;//new了個新的person,產生了新的ao,和閉包

operson1.

say(

)//1

script

>

js必須了解的閉包私有化變數原理

閉包的私有化變數 function person offer function 此時的person裡面只有兩個方法,如果想通過person訪問money是訪問不到的,如果你想通過方法呼叫來訪問 person.makemoney.money 就會返回 uncaught typeerror cannot...

繼承(3) 閉包封裝,屬性私有化

高大上的寫法 var inherit function return function target,origin 相當於 var inherit function function demo target,origin return demo return乙個函式相當於return乙個函式的引用。...

Python中讓變數私有化 Slots

由於在python中不支援private這樣的私有化修飾符,所以如果想把乙個類屬性置為私有的話,方法就是在屬性名前加上雙下劃線 這樣在編譯後,就可以起到保護私有屬性的作用 例如 假如有個類numstr有乙個self.num屬性 在加上雙下劃線後變成self.num後,經過編譯就形成了self.num...