色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

奇妙的js

復(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)有辦法再修改了,不知道是不是這樣

JavaScript技術(shù)奇妙的js,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 绥江县| 海安县| 大丰市| 新泰市| 白山市| 兰州市| 阿克陶县| 公安县| 房产| 武山县| 东至县| 疏勒县| 陇西县| 盱眙县| 山丹县| 武强县| 辰溪县| 彝良县| 武威市| 阿拉尔市| 彩票| 莎车县| 漯河市| 岱山县| 襄垣县| 太白县| 新干县| 榕江县| 息烽县| 大同县| 陵水| 南昌市| 刚察县| 四平市| 竹溪县| 高青县| 金溪县| 固阳县| 佳木斯市| 喀喇沁旗| 家居|