jquery之回调函数及jsonp

回到前端,今天讲一下jsonp的用法,不过在这之前先讲一下跨域和回调函数吧。
跨域:简单来说,就说不同的域名之间的访问,其中域名注册涉及到传输协议、ip地址、端口等;具体可以参考:http://blog.csdn.net/lambert310/article/details/51683775

回调函数:

回调函数被认为是一种高级函数,一种被作为参数传递给另一个函数(在这称作”otherFunction”)的高级函数,回调函数会在otherFunction内被调用(或执行)。回调函数的本质是一种模式(一种解决常见问题的模式),因此回调函数也被称为回调模式。
回调函数并不是立即执行,而是在包含函数的函数体内指定的位置“回调”它(形如其名)。
匿名函数将延迟在click函数的函数体内被调用,即使没有名称,也可以被包含函数通过 arguments对象访问。

正要讲回调函数时,突然碰到了对象和函数的概念,有点懵逼,
一直都似懂非懂的讲着js一切为对象,但又一知半解;(以前只是用到了定义变量的东西);然后就先讲原型prototype吧;
var fn = new Function(“arg1”, “arg2”, “return arg1 * arg2;”);
fn(2, 3); //6
http://www.w3school.com.cn/js/pro_js_functions_function_object.asp
w3c上有明确的规定;这是js原先就定义好的,无需深究;
看这个看懵逼了;没见过,嘻嘻

参考:http://blog.csdn.net/luoweifu/article/details/41466537
http://www.jb51.net/article/54750.htm
本质上就是为了控制函数的执行时段,假如有A/B两个函数,将B函数当做是参数传递到A参数中,当A满足某一条件时,执行B参数,即为回调;
只有js有这种功能,是因为js的function是一种对象,可以作为参数进行传递;
这时候可能就想了,为什么非要把函数传递进去呢,为什么不能在外面定义函数,然后在里面直接调用呢?个人理解啊,这本身就是一种模式,如果是匿名函数的话又怎么可以调用呢?而且假如这两个东西一个在前台一个在后台呢,就需要回调函数了;第三点,可以通过改变不同的参数函数来决定主函数的行为(直接调用就不行了)

https://www.zhihu.com/question/19801131
这篇博客的主人从深层次的介绍了回调函数的原理;

函数式编程
函数式编程最主要的技术之一就是回调函数,等之后腾出手来研究一下函数式变成是什么鬼?

<script type="text/javascript">
    var localHandler = function(data){
        alert('我是本地函数,可以被跨域的remote.js文件调用,远程js带来的数据是:' + data.result);
    };
    </script>
    localHandler({"result":"我是远程js带来的数据"});
一直没理解localHandler({"result":"我是远程js带来的数据"});

突然想通了,先在本地声明函数;然后,远程js文件中,
上面的localHandler();其实就是调用函数,里面的是它的参数,通过传参数的方法传递过来,嘻嘻,感觉自己真笨啊以前,这么简单都理解不了;
个人理解:jsonp其实就是在本地声明一个函数,然后在服务器端生成一个js文件,里面写入这个函数,将数据塞到函数的参数里;最后通过前台的动态拼接
script以及它的src属性将服务器的js文件加载过来;
而jquery封装的jsonp中并没有看到函数的声明,是因为它自动帮你生成回调函数并把数据取出来供success属性方法来调用;
具体参考:http://kb.cnblogs.com/page/139725/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值