每天一篇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 相关文章推荐
JQuery的ajax基础上的超强GridView展示
Sep 18 Javascript
extjs 学习笔记(一) 一些基础知识
Oct 13 Javascript
jQuery 获取浏览器所在的IP地址的小例子
Nov 08 Javascript
js判断是否为ie的方法小结
Jan 13 Javascript
javascript中Math.random()使用详解
Apr 15 Javascript
JavaScript模板引擎用法实例
Jul 10 Javascript
JS中Json数据的处理和解析JSON数据的方法详解
Jun 29 Javascript
原生js实现简单的链式操作
Jul 04 Javascript
jQuery选择器特殊字符与属性空格问题
Aug 14 jQuery
vue 多入口文件搭建 vue多页面搭建的实例讲解
Mar 12 Javascript
在node环境下parse Smarty模板的使用示例代码
Nov 15 Javascript
Vue 使用typescript如何优雅的调用swagger API
Sep 01 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 db类库进行数据库操作
2009/03/19 PHP
Win2003+apache+PHP+SqlServer2008 配置生产环境
2014/07/29 PHP
写一段简单的PHP建立文件夹代码
2015/01/06 PHP
php实现将base64格式图片保存在指定目录的方法
2016/10/13 PHP
JS将秒换成时分秒实现代码
2013/09/03 Javascript
浅析node.js中close事件
2014/11/26 Javascript
第一次接触神奇的Bootstrap
2016/10/14 Javascript
关于javascript sort()排序你可能忽略的一点理解
2017/07/18 Javascript
不得不看之JavaScript构造函数及new运算符
2017/08/21 Javascript
ES7中利用Await减少回调嵌套的方法详解
2017/11/01 Javascript
Angular实现点击按钮控制隐藏和显示功能示例
2017/12/29 Javascript
jquery应用实例分享_实现手风琴特效
2018/02/01 jQuery
Vue实现美团app的影院推荐选座功能【推荐】
2018/08/29 Javascript
使用layer.msg 时间设置不起作用的解决方法
2019/09/12 Javascript
vue与django集成打包的实现方法
2019/11/11 Javascript
[03:49]DOTA2英雄基础教程 光之守卫
2014/01/14 DOTA
[02:37]TI8勇士令状不朽珍藏II视频展示
2018/06/23 DOTA
python字符串替换示例
2014/04/24 Python
python实现根据图标提取分类应用程序实例
2014/09/28 Python
Django Admin 实现外键过滤的方法
2017/09/29 Python
python连接数据库的方法
2017/10/19 Python
python之virtualenv的简单使用方法(必看篇)
2017/11/25 Python
python常见字符串处理函数与用法汇总
2019/10/30 Python
关于numpy中eye和identity的区别详解
2019/11/29 Python
Opencv求取连通区域重心实例
2020/06/04 Python
Python类及获取对象属性方法解析
2020/06/15 Python
CSS3中box-shadow的用法介绍
2015/07/15 HTML / CSS
Belvilla德国:在线预订度假屋
2018/04/10 全球购物
数控专业个人求职信范例
2013/11/29 职场文书
给老师的道歉信
2014/01/11 职场文书
家庭贫困证明范本(经典版)
2014/09/22 职场文书
小学生毕业评语
2014/12/26 职场文书
西安大雁塔导游词
2015/02/10 职场文书
单位计划生育责任书
2015/05/09 职场文书
如何撰写促销方案?
2019/07/05 职场文书
Hive日期格式转换方法总结
2022/06/25 数据库