(jquery functionn () 如何调用

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&如何调用Ext.onReady(function{})内部的方法?-Web开发/JavaScript-javascript-电脑编程网如何调用Ext.onReady(function{})内部的方法?-Web开发/JavaScript作者:zdtwyjp 和相关&&情况是这样的:Ext.onReady(function() {& & &
}});现在我想在另外一个JS文件中调用,上面Ext代码中的aaa方法!请问如何来实现?------回答---------------其他回答(10分)---------JScript code
Ext.onReady(function() {
aaa = function() {
}
});
------其他回答(20分)---------
》现在我想在另外一个JS文件中调用,上面Ext代码中的aaa方法!把 function aaa() {} 放在 my.js 里文件1HTML code
&script type=&text/script& src=&my.js&&&/script&
&script type=&text/script&&
Ext.onReady(function() {
// 使用 aaa 函数
});
&/script&
文件2HTML code
&script type=&text/javascript& src=&my.js&&&/script&
&script type=&text/javascript&&
// 使用 aaa 函数
&/script&
------其他回答(10分)---------吧aaa写成全局的或者外部函数也就是定义在一个 所有访问者都可以看见的位置相关资料:|||||||如何调用Ext.onReady(function{})内部的方法?-Web开发/JavaScript来源网络,如有侵权请告知,即处理!编程Tags:                &                    问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
立即执行函数: (function(){...})() 与 (function(){...}()) 有什么区别?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
没有区别。
你需要明白 IIFE 的原理,我简单说一下:
function foo() {...}
// 这是定义,Declaration;定义只是让解释器知道其存在,但是不会运行。
// 这是语句,Statement;解释器遇到语句是会运行它的。
IIFE 并非必须,传统一点可以这么写:
function foo() {...}
那么为什么要 IIFE?
传统的方法啰嗦,定义和执行分开写;
传统的方法直接污染全局命名空间(浏览器里的 global 对象,如 window)
于是,开发者们想找一个可以解决以上问题的写法。那么像下面这么写行不行呢?
function foo(...){}();
当然是不能,但是为什么呢?因为 function foo(...){} 这个部分只是一个声明,对于解释器来说,就好像你写了一个字符串 "function foo(...){}",它需要使用解析函数,比如 eval() 来执行它才可以。所以把 () 直接放在声明后面是不会执行,这是错误的语法。
如何把它变得正确?说起来也简单,只要把 声明 变成 表达式(Expression) 就可以了。
实际上转变表达式的办法还是很多的,最常见的办法是把函数声明用一对 () 包裹起来,于是就变成了:
(function foo() {...})
// 这里是故意换行,实际上可以和下面的括号连起来
这就等价于:
var foo = function () {...};
// 这就不是定义,而是表达式了。
但是之前我们说不行的那个写法,其实也可以直接用括号包起来,这也是一种等价的表达式:
(function foo(){...}());
所以你问有没有区别?很简单:木有~
另外,刚才说过转变表达式的方式很多,的确还有很多别的写法,比如:
!function foo() {...}();
+function foo() {...}();
这些都可以。
我个人挺偏爱用 void 来转变表达式,因为此关键字不会有返回值。不过这一点真的没有什么要紧的,就当我“龟毛”好了……
void function () {
// 这里是真正需要的代码
OK,所谓不去污染全局命名空间,是因为 IIFE 创建了一个新的函数作用域,你真正的业务代码被封装在其中,自然就不会触碰到全局对象了。如果你需要全局对象,那就 pass 给 IIFE:
void function (global) {
// 在这里,global 就是全局对象了
// 在浏览器里,this 就是 window 对象
我在这里写过一个系列,其中一篇讲作用域和命名提升的,里面的知识点对理解 IIFE 有帮助,有兴趣的话可以继续深入阅读:
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
方式一,调用函数,得到返回值。强制函数直接量执行再返回一个引用,引用在去调用执行
方式二,调用函数,得到返回值。强制运算符使函数调用执行
(function(){})(); 是 把函数当作表达式解析,然后执行解析后的函数
相当于 var a = function(){}; a(); a得到的是函数
(function(){}()); 是把函数表达式和执行当作语句直接执行、
相当于 var a = function(){}(); a得到的是结果
最终结果是一样的、
()只是起了 自执行的作用
和 () 一样的还有很多
+function (){}
这个等于 (function (){})
一般用(function (){}) 还有个作用,就是 避免全局变量
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
就当没区别吧。
该答案已被忽略,原因:
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
这里已经有完整的答案:
该答案已被忽略,原因:
同步到新浪微博
分享到微博?
你好!看起来你挺喜欢这个内容,但是你还没有注册帐号。 当你创建了帐号,我们能准确地追踪你关注的问题,在有新答案或内容的时候收到网页和邮件通知。还能直接向作者咨询更多细节。如果上面的内容有帮助,记得点赞 (????)? 表示感谢。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
扫扫下载 App
SegmentFault
一起探索更多未知$(function(){...})是什么意思, 怎么调用?_百度知道酷勤网 C 程序员的那点事!
当前位置: >
浏览次数:次
注* 这是一篇很有趣的文章,可以很好地帮助你了解JavaScript的Function是怎么工作的。
我在看几个月前写的一些代码。在一个数组中(arrays)中存放了一组方法(function),在未来的某个时间要一次性将这些方法都执行一遍。
这是一件非常简单的事,但有关代码的一些始终困扰着我。
假设数组是这样的:
var callbacks = [ function() { console.log(1); }, function() { console.log(2); }];
你只需要遍历这个数组,并调用每个函数即可:
callbacks.forEach(function(callback) { callback();});
使用forEach比较优美的一点是你可以传入一个不需要每次定义的匿名函数。所以我们也可以将这个函数事先定义。
function call(fn) { fn();}callbacks.forEach(call);
注* 在大量调用时命名函数比匿名函数性能稍好
这可以解决问题,但是看上去有点傻。 JS已经有Function.prototype.call为什么我们不能用它的而要自己写。所以我想要直接使用Function.prototype.call来完成这个。
Function.prototype.call
首先要弄清楚的是call的内部实现细节。像大多数JS对象一样,函数也使用原型(prototype),所以这个 prototype 内部, this 指某个特定的实例。所以简化后的调用实现将是这个样子:
Function.prototype.call = function(thisArg, arg1, arg2, ...) { CALL_FN_WITH_SCOPE(this, thisArg, arg1, arg2, ...);}
这将是在不同了JavaScript引擎要实现的功能,但要记住的重要事情是,this 是被调用的函数。
可以在这里查看规范实现细节:
第二件你要知道的是,你可以在原型上调用函数,只要你使用正确。所以让我们先尝试只调用一个函数。
Function.prototype.call(callbacks[0]);
这是行不通的。你只是调用了一个函数,然后调用this。我们也许可以用这种机制写一些奇怪的代码,我们的目的并没有达到。你真正想要做的是用特定的this绑定Function.prototype.call并调用,昏了吗?
Function.prototype.call.call(callbacks[0]);
这个可以工作,但它也只是相当于callbacks[0].call()调用,所以这种方式也非常不好。我们想要解决的是希望将函数作为一个参数传过去执行,而不是创建额外的调用的函数。
Array.prototype.forEach
理解forEach的工作原理也非常重要。可以看看的说明。
注* forEach语法: arr.forEach(callback[, thisArg])
其中最重要的一点: 第二个参数将被作为该函数执行时的 this 参数。如果你看过规范,你可能看到过[[Call]] - 实际上,你的JS最终会被转化成这样:
myFunction.call(thisArg, item, index, array);
注* forEach回调时传入的参数为 callback(item, index, array)
将他们组合在一起...
我们知道我们想要调用Function.prototype.call,我们知道我们想直接执行这个函数,所以,接下来的尝试:
callbacks.forEach(Function.prototype.call);
但是,这也不工作。它会抛出一个错误。请记住,this 也需要传,我们实际上已经传了一个undefined,因为根本就没有这个参数,以我们数组的例子来看,最终调用就等价于这样:
Function.prototype.call.call(undefined, callbacks[0]);
实际上我们已经接近了,我们想将Function.prototype.call作为this传进去,那样就等价于Function.prototype.call.call的调用。而这又是通过回调实现的。我们差不多在创建一个小的JavaScript俄罗斯套娃(注*大娃套小娃)。有点疯狂,这是它的工作原理。
callbacks.forEach(Function.prototype.call, Function.prototype.call);
我们的目的最终达到了,但实际上这并不是简单的代码, 还。所以我不建议你这样写,但它做了一个有趣的实验。
& 相关主题:

我要回帖

更多关于 jquery function 的文章

 

随机推荐