每天一篇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 arguments 传递给函数的隐含参数
Aug 21 Javascript
jquery下json数组的操作实现代码
Aug 09 Javascript
in.js 一个轻量级的JavaScript颗粒化模块加载和依赖关系管理解决方案
Jul 26 Javascript
JavaScript 盒模型 尺寸深入理解
Dec 31 Javascript
jQuery自适应轮播图插件Swiper用法示例
Aug 24 Javascript
AngularJS中如何使用echart插件示例详解
Oct 26 Javascript
jQuery点击导航栏选中更换样式的实现代码
Jan 23 Javascript
使用gulp搭建本地服务器并实现模拟ajax
Apr 05 Javascript
Vue.js仿微信聊天窗口展示组件功能
Aug 11 Javascript
jquery中有哪些api jQuery主要API
Nov 20 jQuery
vue.js分页中单击页码更换页面内容的方法(配合spring springmvc)
Feb 10 Javascript
基于vue实现图片验证码倒计时60s功能
Dec 10 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.NET的入门教程
2006/10/09 PHP
深入掌握include_once与require_once的区别
2013/06/17 PHP
php打开远程文件的方法和风险及解决方法
2013/11/12 PHP
PHPCMS手机站伪静态设置详细教程
2017/02/06 PHP
PHP实现对数组分页处理实例详解
2017/02/07 PHP
PHP重定向与伪静态区别
2017/02/19 PHP
js加入收藏以及使用Jquery更改透明度
2014/01/26 Javascript
jQuery性能优化技巧分析
2015/02/20 Javascript
纯js实现手风琴效果
2020/04/17 Javascript
使用jquery获取url及url参数的简单实例
2016/06/14 Javascript
模拟javascript中的sort排序(简单实例)
2016/08/17 Javascript
微信小程序 教程之事件
2016/10/18 Javascript
浅谈EasyUI常用控件的禁用方法
2016/11/09 Javascript
浅谈键盘上回车按钮的js触发事件
2017/02/13 Javascript
jQuery动态添加.active 实现导航效果代码思路详解
2017/08/29 jQuery
使用Vue构建可重用的分页组件
2018/03/26 Javascript
Bootstrap 实现表格样式、表单布局的实例代码
2018/12/09 Javascript
详解JSON.stringify()的5个秘密特性
2020/05/26 Javascript
[02:39]DOTA2英雄基础教程 天怒法师
2013/11/29 DOTA
Python的高级Git库 Gittle
2014/09/22 Python
Django ORM框架的定时任务如何使用详解
2017/10/19 Python
python 图像平移和旋转的实例
2019/01/10 Python
详解python中sort排序使用
2019/03/23 Python
python 使用socket传输图片视频等文件的实现方式
2019/08/07 Python
Html5移动端弹幕动画实现示例代码
2018/08/27 HTML / CSS
美国波西米亚风格服装品牌:Show Me Your Mumu
2018/01/05 全球购物
BabyBjörn婴儿背带法国官网:BabyBjorn法国
2018/06/16 全球购物
2014年机关党委工作总结
2014/12/11 职场文书
维稳工作承诺书
2015/01/20 职场文书
车队安全员岗位职责
2015/02/15 职场文书
财务工作个人总结
2015/02/27 职场文书
个性发展自我评价2015
2015/03/09 职场文书
2015年全民国防教育日活动总结
2015/03/23 职场文书
2016年圣诞节寄语(一句话)
2015/12/07 职场文书
幼儿园大班教师评语
2019/06/21 职场文书
导游词之青岛崂山
2019/12/27 职场文书