色尼玛亚洲综合影院,亚洲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 

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

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


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

JavaScript技術奇妙的js,轉載需保留來源!

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

主站蜘蛛池模板: 嫩江县| 汉寿县| 桐乡市| 溧水县| 西乌| 平远县| 博湖县| 安徽省| 涟水县| 长海县| 永吉县| 绵阳市| 贵港市| 乌拉特前旗| 崇仁县| 漠河县| 淳化县| 安丘市| 皋兰县| 徐闻县| 西和县| 牡丹江市| 伊川县| 保亭| 五常市| 大城县| 瑞安市| 拜泉县| 隆林| 克拉玛依市| 通榆县| 大城县| 台南市| 深圳市| 镇平县| 大竹县| 阿城市| 鄢陵县| 黑水县| 阳东县| 武宁县|