匿名的自执行函数定义的方法怎么访问到

匿名的自执行函数定义的方法怎么访问到,第1张

是的。这里的变量也包括函数。函数也是一种变量。匿名写法可以避免变量全局污染。

比如腔芦。在别人写过的一段js代码中你想在里面加一些自己的代码。最好的做法就是用匿名函数包裹。举个例子来看为什么。

比如,已经存在一胡运段别人写的代码了,假设这段代码很长你不想看。

//别人的代码

....

....很多

//这里他定义了一个叫foo的函数

function foo{

 ... 一些函数逻辑

}

好,现在你自己想在同一个页面里面加一些自己的代码。假如你不知道别人已经定义了foo函数,你又额外在自己的函数里面定义一次

function foo{

 ..

}

把这段代码加在了页面的最后。这样你的函数定义就覆盖了 原来别人i写的函数定义。

恰巧,裤圆梁在某个事件里面,就使用foo函数。这个时候,原来的逻辑就不能正确执行了。

假如你的定义写在匿名函数里面, 那么这个定义就对外部不可见的,不会覆盖原来的。这样就避免了变量污染。 实际的应用,你就去参考 流行js库的源代码。通常都是如下写法

(function(){

 var ....

 ....

})()

这样就会避免变量污染了。

注意,在开始的第一个字符 使用 分号,这是因为避免出现代码压缩时产生意外的错误。因为js可以省写分号。假设有段代码是

....

return result

然后又在js合并压缩时 合并成一个文件

...

return reslut(function(){...})()

如果没有分号就会成这样

....

return reslut(function(){...})()

在代码进行压缩后result 变成了一个函数了,这明显是错误的。

因此在匿名函数的前面加个 分号 也是个良好的习惯

很简单的例子:

public class NoneClass {

Peoples man = new Peoples(){public void eat(){System.out.println("吃饭")}}

}

interface Peoples{

public void eat()

}

这里的

new Peoples(){public void eat(){System.out.println("吃饭")}}

就创建了个匿名内部类

本来接口interface是不能高仔new的,但是紧跟new Peoples(){}后跟的大括号,表示这个接口有戚兄汪个实现类,其实new的是Peoples这个接口的实现类,尘前但是这个实现类是匿名内部类的形式。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12243667.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存