每天一篇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 相关文章推荐
json 入门基础教程 推荐
Oct 31 Javascript
JS Excel读取和写入操作(模板操作)实现代码
Apr 11 Javascript
js监听键盘事件示例代码
Jul 26 Javascript
javascript实例分享---具有立体效果的图片特效
Jun 08 Javascript
jQuery实现仿百度帖吧头部固定导航效果
Aug 07 Javascript
关于JS 预解释的相关理解
Jun 28 Javascript
AngularJS通过$http和服务器通信详解
Sep 21 Javascript
值得学习的bootstrap fileinput文件上传工具
Nov 08 Javascript
最后说说Vue2 SSR 的 Cookies 问题
May 25 Javascript
webpack+vue-cil中proxyTable处理跨域的方法
Jul 20 Javascript
深入了解js原型模式
May 30 Javascript
JS如何实现封装列表右滑动删除收藏按钮
Jul 23 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
ThinkPHP3.2.2的插件控制器功能简述
2014/07/09 PHP
PHP结合Ffmpeg快速搭建流媒体服务的实践记录
2018/10/31 PHP
PHP+redis实现的购物车单例类示例
2019/02/02 PHP
DOM相关内容速查手册
2007/02/07 Javascript
7款吸引人眼球的jQuery/CSS3特效实例分享
2013/04/25 Javascript
理解JAVASCRIPT中hasOwnProperty()的作用
2013/06/05 Javascript
基于jQuery日历插件制作日历
2016/03/11 Javascript
javascript三种代码注释方法
2016/06/02 Javascript
Vue.js每天必学之组件与组件间的通信
2016/09/08 Javascript
微信和qq时间格式模板实例详解
2016/10/21 Javascript
详解JavaScript RegExp对象
2017/02/04 Javascript
BootStrap TreeView使用实例详解
2017/11/01 Javascript
常见的浏览器存储方式(cookie、localStorage、sessionStorage)
2019/05/07 Javascript
微信小程序实现折线图的示例代码
2019/06/07 Javascript
vue引入静态js文件的方法
2020/06/20 Javascript
微信小程序实现列表的横向滑动方式
2020/07/15 Javascript
用Python的urllib库提交WEB表单
2009/02/24 Python
Python实现多行注释的另类方法
2014/08/22 Python
Python深入学习之特殊方法与多范式
2014/08/31 Python
Python实现压缩与解压gzip大文件的方法
2016/09/18 Python
Python爬取网易云音乐热门评论
2017/03/31 Python
Python与R语言的简要对比
2017/11/14 Python
Python-OpenCV基本操作方法详解
2018/04/02 Python
BP神经网络原理及Python实现代码
2018/12/18 Python
Python 一句话生成字母表的方法
2019/01/02 Python
OpenCV 模板匹配
2019/07/10 Python
pytorch 模型可视化的例子
2019/08/17 Python
python3实现高效的端口扫描
2019/08/31 Python
Jupyter notebook运行Spark+Scala教程
2020/04/10 Python
美国玛丽莎收藏奢华时尚商店:Marissa Collections
2016/11/21 全球购物
优衣库英国官网:UNIQLO英国
2016/12/25 全球购物
美国真皮手袋品牌:GiGi New York
2017/03/10 全球购物
伦敦剧院门票:From The Box Office
2018/06/30 全球购物
法律系毕业生自荐信范文
2014/03/27 职场文书
2015大学生暑假调查报告
2015/07/13 职场文书
小学教师教学随笔
2015/08/14 职场文书