每天一篇javascript学习小结(Function对象)


Posted in Javascript onNovember 16, 2015

小编两天都没有更新文章了,小伙伴们是不是等着急了,今天开始再继续我们的《每天一篇javascript学习小结》系列文章,希望大家继续关注。

1、Function  函数调用(类似call方法)

function callSomeFunction(someFunction, someArgument){
      return someFunction(someArgument);
    }

    function add10(num){
      return num + 10;
    }
    
    var result1 = callSomeFunction(add10, 10);//调用add10 把参数10传给add10
    alert(result1);  //20
    
    function getGreeting(name){
      return "Hello, " + name;
    }
    
    var result2 = callSomeFunction(getGreeting, "Nicholas");
    alert(result2);  //Hello, Nicholas

2、函数返回函数
 

function createComparisonFunction(propertyName) {
    
      return function(object1, object2){
        var value1 = object1[propertyName];
        var value2 = object2[propertyName];
    
        if (value1 < value2){
          return -1;
        } else if (value1 > value2){
          return 1;
        } else {
          return 0;
        }
      };
    }

    var data = [{name: "Zachary", age: 28}, {name: "Nicholas", age: 29}];
    
    data.sort(createComparisonFunction("name"));//sort函数接收一个函数作为排序的参考,函数createComparisonFuntion返回了一个匿名的排序函数
    alert(data[0].name); //Nicholas
    
    data.sort(createComparisonFunction("age"));
    alert(data[0].name); //Zachary

3、apply()方法使用

function sum(num1, num2){
      return num1 + num2;
    }
    
    function callSum1(num1, num2){
      return sum.apply(this, arguments);//sum函数请求把callSum1的指针传给自己,并作计算,此时的this指向callSum1
    }
    
    function callSum2(num1, num2){
      return sum.apply(this, [num1, num2]);
    }
    
    alert(callSum1(10,10));  //20
    alert(callSum2(10,10));  //20

4、函数Arguments Caller使用

function outer(){
      inner();
    }
    
    function inner(){
      alert(inner.caller);
    }
    
    outer();
caller

//返回一个对函数的引用,该函数调用了当前函数。

5、arguments.callee.caller
 

function outer(){
      inner();
    }
    function inner(){
      alert(arguments.callee.caller);
      //argments.callee就是函数体本身,arguments.callee.caller就是函数体的调用函数体
    }
    outer();


function factorial(num){
      if (num <= 1) {
        return 1;
      } else {
        return num * arguments.callee(num-1)//callee当前函数的引用即factorial函数本身的函数体
      }
    }

    var trueFactorial = factorial;
    
    factorial = function(){
      return 0;
    };
    
    alert(trueFactorial(5));  //120
    alert(factorial(5));    //0

6、Funtion bind()方法

window.color = "red";
    var o = { color: "blue" };
              
    function sayColor(){
      alert(this.color);
    }
    var objectSayColor = sayColor.bind(o);
    objectSayColor();  //blue
    /*
      bind主要是为了改变函数内部的this指向,这个是在ECMA5以后加入的,所以IE8一下的浏览器不支持
      bind方法会创建一个新函数,称为绑定函数.当调用这个绑定函数时,绑定函数会以创建它时传入bind方法的第一个参数作为this,
      传入bind方法的第二个以及以后的参数加上绑定函数运行时本身的参数按照顺序作为原函数的参数来调用原函数.
    */

7、Function call()方法

window.color = "red";
    var o = { color: "blue" };
    
    function sayColor(){
      alert(this.color);
    }
    
    sayColor();      //red
    
    sayColor.call(this);  //red 此时this指向window
    sayColor.call(window); //red 同上
    sayColor.call(o);   //blue 此时sayColor的指针指向o

 function sum(num1, num2){
      return num1 + num2;
    }
    
    function callSum(num1, num2){
      return sum.call(this, num1, num2);
    }
    
    alert(callSum(10,10));  //20

8、函数长度length

function sayName(name){
      alert(name);
    }   
    
    function sum(num1, num2){
      return num1 + num2;
    }
    
    function sayHi(){
      alert("hi");
    }
    
    alert(sayName.length); //1
    alert(sum.length);   //2
    alert(sayHi.length);  //0
    //实际返回的是函数的参数的长度

以上就是今天的javascript学习小结,之后每天还会继续更新,希望大家继续关注。

Javascript 相关文章推荐
js资料toString 方法
Mar 13 Javascript
去掉gridPanel表头全选框的小例子
Jul 18 Javascript
JQuery获取表格数据示例代码
May 26 Javascript
jQuery使用removeClass方法删除元素指定Class的方法
Mar 26 Javascript
JavaScript中的splice()方法使用详解
Jun 09 Javascript
浅谈jQuery中setInterval()方法
Jul 07 Javascript
使用jQuery制作浮动工具栏的实例分享
May 13 Javascript
express文件上传中间件Multer详解
Oct 24 Javascript
清除浏览器缓存的几种方法总结(必看)
Dec 09 Javascript
JavaScript调试的多个必备小Tips
Jan 15 Javascript
mpvue写一个CPASS小程序的示例
Sep 04 Javascript
angular 表单验证器验证的同时限制输入的实现
Apr 11 Javascript
举例讲解JavaScript中关于对象操作的相关知识
Nov 16 #Javascript
实例代码详解jquery.slides.js
Nov 16 #Javascript
jQuery实现标题有打字效果的焦点图代码
Nov 16 #Javascript
JavaScript中对DOM节点的访问、创建、修改、删除
Nov 16 #Javascript
常用javascript表单验证汇总
Jul 20 #Javascript
jquery验证邮箱格式是否正确实例讲解
Nov 16 #Javascript
跟我学习javascript的call(),apply(),bind()与回调
Nov 16 #Javascript
You might like
提升PHP执行速度全攻略(下)
2006/10/09 PHP
PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
2017/07/19 PHP
PHP 文件锁与进程锁的使用示例
2017/08/07 PHP
jQuery使用一个按钮控制图片的伸缩实现思路
2013/04/19 Javascript
Javascript基础 函数“重载” 详细介绍
2013/10/25 Javascript
为jquery的ajaxfileupload增加附加参数的方法
2014/03/04 Javascript
js过滤HTML标签完整实例
2015/11/26 Javascript
Javascript同时声明一连串(多个)变量的方法
2017/01/23 Javascript
ES6中Iterator与for..of..遍历用法分析
2017/03/31 Javascript
vue中component组件的props使用详解
2017/09/04 Javascript
JS实现的汉字与Unicode码相互转化功能分析
2018/05/25 Javascript
javascript深拷贝、浅拷贝和循环引用深入理解
2018/05/27 Javascript
小程序兼容安卓和IOS数据处理问题及坑
2018/09/18 Javascript
[06:33]3.19 DOTA2发布会 海涛、冷冷、2009见证希望
2014/03/21 DOTA
Python for Informatics 第11章 正则表达式(一)
2016/04/21 Python
浅谈python内置变量-reversed(seq)
2017/06/21 Python
详解python里使用正则表达式的全匹配功能
2017/10/19 Python
Python中一般处理中文的几种方法
2019/03/06 Python
django商品分类及商品数据建模实例详解
2020/01/03 Python
Python通过fnmatch模块实现文件名匹配
2020/09/30 Python
Book Depository澳大利亚:世界领先的专业在线书店之一
2018/12/27 全球购物
巴西最大的运动品牌:Olympikus
2020/07/14 全球购物
Weblogc domain问题
2014/01/27 面试题
C语言中一个结构不能包含指向自己的指针吗
2012/05/25 面试题
如何利用cmp命令比较文件
2016/04/11 面试题
校园自助餐厅的创业计划书
2013/12/26 职场文书
员工考核管理制度
2014/02/02 职场文书
文明礼貌演讲稿
2014/05/12 职场文书
党的生日演讲稿
2014/09/10 职场文书
2014年材料员工作总结
2014/11/19 职场文书
2015社区个人工作总结范文
2015/05/13 职场文书
高效课堂教学反思
2016/02/24 职场文书
HAM-2000摩机图
2021/04/22 无线电
教你如何使用Python实现二叉树结构及三种遍历
2021/06/18 Python
Java基于Dijkstra算法实现校园导游程序
2022/03/17 Java/Android
GTX1650super好不好 gtx1650super显卡属于什么级别
2022/04/08 数码科技