Heim >Web-Frontend >js-Tutorial >奇妙的js_javascript技巧

奇妙的js_javascript技巧

WBOY
WBOYOriginal
2016-05-16 19:08:561044Durchsuche
复制代码 代码如下:

>>> 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定义后好似没有办法再修改了,不知道是不是这样
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn