专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

web前端之 重载、jsonp跨域、闭包

ins518 2024-09-16 21:28:37 技术文章 21 ℃ 0 评论

1、js怎么实现函数的重载?

重载就是一组具有相同名字、不同参数列表的函数方法。但是记忆中,相同的函数名,后面的函数会覆盖掉前面的函数的,如权威书上有写:

所以在开发过程中,命名函数的时候很小心,但是问题既然存在 必然有道理的,换个方式想,不能倔 和杠。

搜索了一下:关于js如何实现函数的重载overLoading,看下面代码。

function overLoading() {
  // 根据arguments.length参数的长度,对不同参数的长度进行不同的操作
  switch(arguments.length) {
    case 0:
      /*没有参数时,操作的代码写在这里*/
      break;
    case 1:
      /*有1个参数时,操作的代码写在这里*/
      break;
    case 2:
      /*有2个参数时,操作的代码写在这里*/
       
  //后面还有很多的case......
 default:
 return '没有找到你参数长度要执行的操作';
 
 }
 }
 

2、谈谈js跨域,谈谈jsonp?

跨域是指从一个域名的网页去请求另一个域名的资源。

js跨域指通过js 在 不同域 之间进行 数据传输。

「不同的域:不同的协议、域名、端口有任何一个不同,都可以被当作不同的域。」

通过jsonp跨域

ajax不能跨域请求数据,但是,在页面上可以引入不同域上的js脚本文件。jsonp正是利用这个特性来实现的。

例如:我有个index.html页面,需要利用ajax获取不同域上的json数据

「例如json数据地址是http://example.com/data.json」,

那么在index.html中,你可以这样写:

<script src="http://example.com/data.json?callback=dosomething"></script>
<script>
 function dosomething(jsondata){
 //处理获得的json数据
 }
</script>

如果你的页面用了jquery,你可以通过它封装的方法更方便的进行jsonp操作:

<script>
 $.getJSON('http://example.com/data.json?callback=?,function(jsondata)'){
 //处理获得的json数据
 });
</script>

优点:兼容性好,在古老的浏览器中都可以运行。

缺点:只支持get请求而不支持post等其他类型的http请求;它只支持跨域http请求这种情况,不能解决不同域的两个页面如何进行js调用等问题。

「关于跨域解决,CORS也可以了解一下」。

3、讲讲闭包吧?闭包的好处?

首先我们要有这样的认知:变量作用域无非就2种:全局变量和局部变量

函数内部可以直接读取全局变量,但是函数外部无法读取函数内部的局部变量。

闭包示例:
function f1(){
 var num=100;
 function f2(){
 num++;
 console.log(num)
 }
 returnf2;//执行到这步f1()的f1Ao被销毁了,但是保存在b定义的时候了。
}
var demo=f1();
demo();//101
demo();//102

闭包可以先简单理解成:

“定义在一个函数内部的函数”;

能够读取其他函数内部变量的函数。

是将函数内部和外部连接起来的桥梁。

特性:1、函数套函数

2、内部函数可以直接使用外部函数的局部变量或参数。

3、变量的值始终保存在内存中,不会因为外层函数调用后被自动清除。(即不会被垃圾回收机制回收)

缺点:1、内存消耗。一般来说函数的局部变量等会随着执行期上下文一起销毁,但是闭包因为在函数里面,所以拿到来它的局部变量。所以常驻了内存。

2、闭包会在父函数外部,改变父函数内部变量的值(如上代码)。但是开发过程中,不要随便改变父函数内部变量的值。

优点:1、全局变量可以造成命名冲突,使用闭包不用担心这个问题,因为它私有化,加强了封装性,保护变量的安全

2、全局变量因为每个模块都可以调用,当程序越来越复杂之后,会带来不可预测的危险,推荐变量尽量私有化,当我们需要让局部变量发挥全局变量作用时,可以考虑使用闭包。

面包会有的,心态很重要,大千世界里,总有一条自己的道路!加油~。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表