每天一篇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之锁定表格栏位
Jun 29 Javascript
JavaScript 类似flash效果的立体图片浏览器
Feb 08 Javascript
jQuery弹出(alert)select选择的值
Apr 21 Javascript
可以浮动某个物体的jquery控件用法实例
Jul 24 Javascript
JS实现弹性菜单效果代码
Sep 07 Javascript
AngularJS基础 ng-csp 指令详解
Aug 01 Javascript
EasyUI的doCellTip实现鼠标放到单元格上提示单元格内容
Aug 24 Javascript
Chrome调试折腾记之JS断点调试技巧
Sep 11 Javascript
微信小程序出现wx.getLocation再次授权问题的解决方法分析
Jan 16 Javascript
浅谈JavaScript面向对象--继承
Mar 20 Javascript
layui 图片上传+表单提交+ Spring MVC的实例
Sep 21 Javascript
vue 开发之路由配置方法详解
Dec 02 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学习之简单计算器实现代码
2011/06/09 PHP
解析php安全性问题中的:Null 字符问题
2013/06/21 PHP
php文件缓存类汇总
2014/11/21 PHP
javascript 模式设计之工厂模式学习心得
2010/04/27 Javascript
JavaScript快速检测浏览器对CSS3特性的支持情况
2012/09/26 Javascript
js综合应用实例简单的表格统计
2013/09/03 Javascript
用jquery中插件dialog实现弹框效果实例代码
2013/11/15 Javascript
jquery提交form表单时禁止重复提交的方法
2014/02/13 Javascript
javascript html5移动端轻松实现文件上传
2020/03/27 Javascript
基于jquery实现简单的分页控件
2016/03/17 Javascript
基于BootStrap Metronic开发框架经验小结【九】实现Web页面内容的打印预览和保存操作
2016/05/12 Javascript
jQuery和hwSlider实现内容响应式可触控滑动切换效果附源码下载(二)
2016/06/22 Javascript
很棒的js选项卡切换效果
2016/07/15 Javascript
jquery实现拖动效果
2016/08/10 Javascript
微信小程序上传多图到服务器并获取返回的路径
2019/05/05 Javascript
jQuery删除/清空指定元素的所有子节点实例代码
2019/07/04 jQuery
高效jQuery选择器的5个技巧实例分析
2019/11/26 jQuery
[44:33]EG vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python字符串的encode与decode研究心得乱码问题解决方法
2009/03/23 Python
Python编码爬坑指南(必看)
2016/06/10 Python
Python中pymysql 模块的使用详解
2019/08/12 Python
python由已知数组快速生成新数组的方法
2020/04/08 Python
python 解决pycharm运行py文件只有unittest选项的问题
2020/09/01 Python
Python3使用tesserocr识别字母数字验证码的实现
2021/01/29 Python
如何用 Python 制作 GitHub 消息助手
2021/02/20 Python
html5本地存储_动力节点Java学院整理
2017/07/12 HTML / CSS
国际奢侈品品牌童装购物网站:Designer Childrenswear
2019/05/08 全球购物
早读迟到检讨书
2014/01/24 职场文书
学雷锋标兵事迹材料
2014/08/18 职场文书
我的梦想演讲稿500字
2014/08/21 职场文书
2014年党员整改措施
2014/10/24 职场文书
房地产销售助理岗位职责
2015/04/14 职场文书
导游词之新疆尼雅遗址
2019/10/16 职场文书
Golang 使用Map实现去重与set的功能操作
2021/04/29 Golang
苹果电脑mac os中货币符号快捷输入
2022/02/17 杂记
MySQL创建管理KEY分区
2022/04/13 MySQL