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

奇妙的js

復制代碼 代碼如下:
>>> function a(){function b(){return "aaa"} Function.prototype.c=function(){return b();}}    
>>> a()    
>>> a.c    
function()    
>>> a.c()    
"aaa"   
>>> a.hasOwnProperty("c")    
false 

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

代碼
復制代碼 代碼如下:
>>> d={};    
Object    
>>> function a(){function b(){return "aaa"} d.c=function(){return b();}}    
>>> a()    
>>> d.c()    
"aaa"   


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

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

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

主站蜘蛛池模板: 德兴市| 滦平县| 中山市| 疏勒县| 威远县| 鹤岗市| 方城县| 阿巴嘎旗| 锡林浩特市| 乐清市| 库尔勒市| 邵武市| 城固县| 英山县| 炎陵县| 贺兰县| 磴口县| 宿松县| 泸水县| 祁连县| 阿拉尔市| 东安县| 湖北省| 西乡县| 枝江市| 偃师市| 承德县| 隆安县| 镇沅| 德钦县| 绥芬河市| 富民县| 百色市| 昆明市| 砚山县| 定边县| 姚安县| 凤山市| 定兴县| 长乐市| 文化|