每天一篇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入门教程(6) Window窗口对象
Jan 31 Javascript
Javascript 修改String 对象 增加去除空格功能(示例代码)
Nov 30 Javascript
Javasipt:操作radio标签详解
Dec 30 Javascript
css如何让浮动元素水平居中
Aug 07 Javascript
使用node+vue.js实现SPA应用
Jan 28 Javascript
【经典源码收藏】基于jQuery的项目常见函数封装集合
Jun 07 Javascript
AngularJs定制样式插入到ueditor中的问题小结
Aug 01 Javascript
bootstrap折叠调用collapse()后data-parent不生效的快速解决办法
Feb 23 Javascript
Vue.js划分组件的方法
Oct 29 Javascript
vue实现绑定事件的方法实例代码详解
Jun 20 Javascript
JS中getElementsByClassName与classList兼容性问题解决方案分析
Aug 07 Javascript
layui 数据表格+分页+搜索+checkbox+缓存选中项数据的方法
Sep 21 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
2020年4月新番动漫目录 官方宣布4月播出的作品一览
2020/03/08 日漫
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
PHP微信H5支付开发实例
2018/07/25 PHP
浅谈PHP进程管理
2019/03/08 PHP
thinkphp框架类库扩展操作示例
2019/11/26 PHP
用javascript来实现动画导航效果的代码
2007/12/16 Javascript
javascript JSON操作入门实例
2010/04/16 Javascript
JavaScript使用IEEE 标准进行二进制浮点运算产生莫名错误的解决方法
2011/05/28 Javascript
Javascript异步编程的4种方法让你写出更出色的程序
2013/01/17 Javascript
js禁止页面复制功能禁用页面右键菜单示例代码
2013/08/29 Javascript
Backbone.js中的集合详解
2015/01/14 Javascript
JS+CSS实现大气的黑色首页导航菜单效果代码
2015/09/10 Javascript
原生js实现网易轮播图效果
2020/04/10 Javascript
jQuery基于xml格式数据实现模糊查询及分页功能的方法
2016/12/25 Javascript
利用Javascript裁剪图片并存储的简单实现
2017/03/13 Javascript
简单谈谈axios中的get,post方法
2017/06/25 Javascript
微信小程序三级联动地址选择器的实例代码
2017/07/12 Javascript
AngularJS 控制器 controller的详解
2017/10/17 Javascript
react 兄弟组件如何调用对方的方法示例
2018/10/23 Javascript
深入理解js A*寻路算法原理与具体实现过程
2018/12/13 Javascript
基于vue的验证码组件的示例代码
2019/01/22 Javascript
ES6基础之解构赋值(destructuring assignment)
2019/02/21 Javascript
Python程序设计入门(2)变量类型简介
2014/06/16 Python
使用PyV8在Python爬虫中执行js代码
2017/02/16 Python
使用python进行文本预处理和提取特征的实例
2018/06/05 Python
Python功能点实现:函数级/代码块级计时器
2019/01/02 Python
Python任务调度利器之APScheduler详解
2020/04/02 Python
基于Python编写一个计算器程序,实现简单的加减乘除和取余二元运算
2020/08/05 Python
详解Python3.8+PyQt5+pyqt5-tools+Pycharm配置详细教程
2020/11/02 Python
call在Python中改进数列的实例讲解
2020/12/09 Python
大唐电信科技股份有限公司java工程师面试经历
2016/12/09 面试题
2015年春训学习心得体会范文
2015/03/09 职场文书
学生犯错保证书
2015/05/09 职场文书
小学英语教学反思范文
2016/02/15 职场文书
七年级作文之《我和我的祖国》观后感作文
2019/10/18 职场文书
Python加密技术之RSA加密解密的实现
2022/04/08 Python