每天一篇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使用过程中需要注意的地方和一些基本语法
Aug 26 Javascript
原生JS实现表单checkbook获取已选择的值
Jul 21 Javascript
jquery隐藏标签和显示标签的实例
Nov 11 Javascript
text-align:justify实现文本两端对齐 兼容IE
Aug 19 Javascript
jQuery实现可用于博客的动态滑动菜单完整实例
Sep 17 Javascript
喜大普奔!jQuery发布 3.0 最终版
Jun 12 Javascript
详解基于javascript实现的苹果系统底部菜单
Dec 02 Javascript
js+html5生成自动排列对话框实例
Oct 09 Javascript
基于Vue+element-ui 的Table二次封装的实现
Jul 20 Javascript
IE8中jQuery.load()加载页面不显示的原因
Nov 15 jQuery
Javascript中window.name属性详解
Nov 19 Javascript
node.js文件的复制、创建文件夹等相关操作
Feb 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防止直接访问.php 文件的实现方法
2017/07/28 PHP
PHP cURL获取微信公众号access_token的实例
2018/04/28 PHP
PHP获取MySQL执行sql语句的查询时间方法
2018/08/21 PHP
javascript Ext JS 状态默认存储时间
2009/02/15 Javascript
JS+DIV实现鼠标划过切换层效果的实例代码
2013/11/26 Javascript
简介AngularJS中使用factory和service的方法
2015/06/17 Javascript
为什么JavaScript没有块级作用域
2016/05/22 Javascript
基于JS代码实现图片在页面中旋转效果
2016/06/16 Javascript
Bootstrap源码解读按钮(5)
2016/12/23 Javascript
JavaScript实现的冒泡排序法及统计相邻数交换次数示例
2017/04/26 Javascript
详解Vue 开发模式下跨域问题
2017/06/06 Javascript
vue组件传递对象中实现单向绑定的示例
2018/02/28 Javascript
解决layui前端框架 form表单,table表等内置控件不显示的问题
2018/08/19 Javascript
详解VUE前端按钮权限控制
2019/04/26 Javascript
JS内置对象和Math对象知识点详解
2020/04/03 Javascript
Python中使用支持向量机SVM实践
2017/12/27 Python
python如何实现一个刷网页小程序
2018/11/27 Python
python 实现return返回多个值
2019/11/19 Python
python新式类和经典类的区别实例分析
2020/03/23 Python
Pytorch 使用不同版本的cuda的方法步骤
2020/04/02 Python
python statsmodel的使用
2020/12/21 Python
CSS3中31种选择器使用方法教程
2013/12/05 HTML / CSS
Optimalprint加拿大:在线打印服务
2020/04/03 全球购物
计算 s=(x*y)1/2,用两个宏定义来实现
2016/08/11 面试题
硕士生工作推荐信
2014/03/07 职场文书
公司股东合作协议书
2014/09/14 职场文书
2014年银行信贷员工作总结
2014/12/08 职场文书
招标保密承诺书
2015/01/20 职场文书
教师个人发展总结
2015/02/11 职场文书
业务员辞职信范文
2015/03/02 职场文书
技术员个人工作总结
2015/03/03 职场文书
2015年煤矿工作总结
2015/04/28 职场文书
长江七号观后感
2015/06/11 职场文书
追讨欠款律师函
2015/06/24 职场文书
2016年大学校运会广播稿件
2015/12/21 职场文书
利用Python读取微信朋友圈的多种方法总结
2021/08/23 Python