博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
奇妙的JavaScript函数
阅读量:4046 次
发布时间:2019-05-25

本文共 1597 字,大约阅读时间需要 5 分钟。

三、函数对象的妙用

1.携带“静态工具方法”

在Java等强类型语言中,工具方法往往被声明为静态形式,以便于使用类名直接访问。而JavaScript中没有静态与非静态的区别,在函数对象上添加了方法就可以通过函数名直接访问进而调用。

   function hasTool() {}

  

   hasTool.toolFunction = function(){

      return "工具方法~";

   };

  

   console.log(hasTool.toolFunction());

这一点在jQuery中有非常明显的体现:

2.以不同形式引用函数对象

正因为函数也是对象,所以函数就可以堂而皇之的作为一个数据被放在任何地方。又因为在JavaScript中调用一个函数只需要在函数的引用后面加上()即可,所以调用函数的方式可谓千变万化!

 

①赋值给其他变量

   var otherRef = sum;

   result = otherRef(5,8);

   console.log("otherRef(5,8)="+result);

 

②赋值给对象属性

   var obj = {

      myName:"Tom",

      myFun:sum

   };

  

   result= obj.myFun(4, 6);

   console.log("obj.myFun(4, 6)="+result);

 

③数组元素

   var arr = ["hello",true,30,otherRef];

   result = arr[3](3,3);

   console.log("arr[3](3,3)="+result);

 

⑤函数的返回值

   function returnSum() {

      return function(){

         return "Happy message";

      };

   }

  

   result = returnSum()();

   console.log("returnSum()()="+result);

 

2.闭包

在JavaScript中子作用域可以访问父作用域中的变量,但父作用域不可以访问子作用域中的变量,此时每一个子作用域就可以看做一个闭包,而函数往往是最典型的闭包。那么如何将一个变量的作用域从函数中延伸到函数外呢?很简单,在父函数中将一个使用了父函数变量的子函数的引用作为父函数返回值返回即可。

   //包含特殊数据的一个函数

   function variableFunction() {

     

      var variableForGloabl = "需要在上一级作用域中使用的变量";

     

      //声明一个子函数,这个函数是可以访问到variableForGloabl

      function getVariable() {

         return variableForGloabl;

      }

     

      //将子函数的引用返回,这一点很关键

      return getVariable;

     

   }

  

   //获取getVariable()函数的引用

   var funRef = variableFunction();

  

   //调用有权访问局部变量的getVariable()函数获取数据

   var data = funRef();

   console.log("data="+data);

  

   //可以多次调用获取

   data = funRef();

   console.log("data="+data);

 

闭包的详细内容请参照《尚硅谷_JavaScript闭包.docx》

 

3.回调函数

在很多编程语言中都有回调函数的概念,回调函数指的是函数声明后自己不调用,而是交给系统或其他函数调用。JavaScript中由于函数是对象,所以要实现回调只需要将函数的引用交给系统或指定函数即可。

//由系统调用的典型回调函

btnEle.onclick = function(){

   alert("Hello!");

};

 

 

本教程由尚硅谷教育大数据研究院出品,如需转载请注明来源。

你可能感兴趣的文章
swiper插件的的使用
查看>>
layui插件的使用
查看>>
JS牛客网编译环境的使用
查看>>
9、VUE面经
查看>>
关于进制转换的具体实现代码
查看>>
Golang 数据可视化利器 go-echarts ,实际使用
查看>>
mysql 跨机器查询,使用dblink
查看>>
mysql5.6.34 升级到mysql5.7.32
查看>>
dba 常用查询
查看>>
Oracle 异机恢复
查看>>
Oracle 12C DG 搭建(RAC-RAC/RAC-单机)
查看>>
Truncate 表之恢复
查看>>
Oracle DG failover 后恢复
查看>>
mysql 主从同步配置
查看>>
为什么很多程序员都选择跳槽?
查看>>
mongdb介绍
查看>>
mongdb在java中的应用
查看>>
区块链技术让Yotta企业云盘为行政事业服务助力
查看>>
Yotta企业云盘更好的为媒体广告业服务
查看>>
Yotta企业云盘助力旅游行业新发展
查看>>