欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

奇妙的js

 更新時(shí)間:2007年09月24日 21:37:12   作者:  
復(fù)制代碼 代碼如下:

>>> function a(){function b(){return "aaa"} Function.prototype.c=function(){return b();}}    
>>> a()    
>>> a.c    
function()    
>>> a.c()    
"aaa"   
>>> a.hasOwnProperty("c")    
false 

看這段代碼,首先聲明一個(gè)函數(shù)a,內(nèi)部又定義了一個(gè)函數(shù)b,但是函數(shù)b不是函數(shù)對(duì)象a的方法,只是函數(shù)a塊當(dāng)中的臨時(shí)變量函數(shù)(或者說(shuō)私有函數(shù),不知道怎么描述好),后面又定義了一個(gè)函數(shù)c是用function(){}在a內(nèi)部定義的,所以會(huì)產(chǎn)生closure所以c可以遍歷到a下面所有塊內(nèi)部變量,當(dāng)然包括b,我又把c掛到了Function.prototype下面,就是不是直接掛a下,而是掛到a的原形鏈上,最后還是執(zhí)行出來(lái)了,并且hasOwnProperty也是假,更有 

代碼
復(fù)制代碼 代碼如下:

>>> d={};    
Object    
>>> function a(){function b(){return "aaa"} d.c=function(){return b();}}    
>>> a()    
>>> d.c()    
"aaa"   


closure和函數(shù)執(zhí)行的context一點(diǎn)關(guān)系沒(méi)有,context可以用call apply方法改變this,可是closure在function定義后好似沒(méi)有辦法再修改了,不知道是不是這樣

相關(guān)文章

最新評(píng)論