每天一篇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 相关文章推荐
JavaScript Tips 使用DocumentFragment加快DOM渲染速度
Jun 28 Javascript
理解AngularJs指令
Dec 10 Javascript
jQuery each函数源码分析
May 25 Javascript
js实现简单的获取验证码按钮效果
Mar 03 Javascript
AngularJS日程表案例详解
Aug 15 Javascript
Mui使用jquery并且使用点击跳转新窗口的实例
Aug 19 jQuery
Vue动态修改网页标题的方法及遇到问题
Jun 09 Javascript
详解node登录接口之密码错误限制次数(含代码)
Oct 25 Javascript
JS立即执行的匿名函数用法分析
Nov 04 Javascript
layui前端时间戳转化实例
Nov 15 Javascript
Vue 嵌套路由使用总结(推荐)
Jan 13 Javascript
js实现可爱的气泡特效
Sep 05 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获取毫秒级时间戳的方法
2015/04/15 PHP
php实现随机显示图片方法汇总
2015/05/21 PHP
Laravel中服务提供者和门面模式的入门介绍
2017/11/06 PHP
Laravel 将数据表的数据导出,并生成seeds种子文件的方法
2019/10/09 PHP
tp5框架前台无限极导航菜单类实现方法分析
2020/03/29 PHP
PHP实现爬虫爬取图片代码实例
2021/03/03 PHP
Array.prototype 的泛型应用分析
2010/04/30 Javascript
JS DOM 操作实现代码
2010/08/01 Javascript
JavaScript内核之基本概念
2011/10/21 Javascript
精心挑选的12款优秀的基于jQuery的手风琴效果插件和教程
2012/08/22 Javascript
JavaScript执行效率与性能提升方案
2012/12/21 Javascript
动态的创建一个元素createElement及删除一个元素
2014/01/24 Javascript
JavaScript生成的动态下雨背景效果实现方法
2015/02/25 Javascript
AngularJS入门教程之数据绑定原理详解
2016/11/02 Javascript
深入理解jquery中的each用法
2016/12/14 Javascript
浅谈JavaScript的自动垃圾收集机制
2016/12/15 Javascript
快速使用node.js进行web开发详解
2017/04/26 Javascript
关于Ajax的原理以及代码封装详解
2017/09/08 Javascript
详细分析jsonp的原理和实现方式
2017/11/20 Javascript
JS运动特效之链式运动分析
2018/01/24 Javascript
JavaScript高级函数应用之分时函数实例分析
2018/08/03 Javascript
详解ng-alain动态表单SF表单项设置必填和正则校验
2019/06/11 Javascript
Python转换字典成为对象,可以用&quot;.&quot;方式访问对象属性实例
2020/05/11 Python
python实现二分查找算法
2020/09/18 Python
用python写一个带有gui界面的密码生成器
2020/11/06 Python
迷你分体式空调:SoGoodToBuy
2018/08/07 全球购物
美国快时尚彩妆品牌:Winky Lux(透明花瓣润唇膏)
2018/11/06 全球购物
实习教师自我鉴定
2013/09/27 职场文书
培训主管的岗位职责
2013/11/23 职场文书
学校党的群众路线教育实践活动整改措施
2014/10/25 职场文书
2014年质检工作总结
2014/11/26 职场文书
2014年学校团委工作总结
2014/12/20 职场文书
毕业典礼邀请函
2015/01/31 职场文书
工作犯错保证书
2015/05/11 职场文书
《鲸》教学反思
2016/02/23 职场文书
Python中Selenium对Cookie的操作方法
2021/07/09 Python