美文网首页
js 学习 -- 05

js 学习 -- 05

作者: YxxxHao | 来源:发表于2016-11-17 23:42 被阅读32次

    引用类型(Function)

    1. Function 函数

      function sum(num1, num2) {
      return num1 + num2;
      }

    没有重载
    function addSomeNumber(num) {
        return num + 100;
    }
    
    function addSomeNumber(num) {
        return num + 200;
    }
    
    var result = addSomeNumber(100);    // 300
    

    后面的函数会覆盖前面的函数~~~~

    作为值的函数

    js 中函数名本身就是变量,所以函数可以当作值来使用:

    function callSomeFunction(someFunction, someArgument) {
        return semeFunction(someArgument);
    }
    
    function add10(num){
        return num + 10;
    }
    
    var result = callSomeFunction(add10, 10); // 20
    

    访问函数指针但不执行函数方法时去掉后面的括号。

    函数内部属性

    函数内部有两个特殊的对象:arguments 和 this

    arguments: 它是一个类数组对象,包含着传入函数中的所有参数。这个对象还有一个 callee 的属性,该属性是一个指针,指向拥有这个 arguments 对象的函数。

    function factorial(num) {
        if (num <= 1) {
            return 1;
        } else {
            return num * factorial(num - 1);
        }
    }
    

    等同于:

    function factorial(num) {
        if (num <= 1) {
            return 1;
        } else {
            return num * arguments.callee(num - 1);
        }
    }
    

    this:类似于java 中的 this,引用的是函数据以执行的环境变量

    window.color = "red";
    var o = { color : "blue"};
    
    function sayColor() {
        alert(this.color);
    }
    
    sayColor(); // red
    
    o.sayColor = sayColor;
    o.sayColor(); // blue
    
    函数属性和方法

    函数就是对象,所以也是有属性和方法的,每个函数都包含 length 和 prototype

    length:函数希望接收的命名参数的个数
    protorype:后面单独介绍

    每个函数都包含两个非继承而来的方法:apply() 和 call() 这两个方法的用途都是在特定的作用域里调用函数,apply()接受两个参数,一个是运行的使用域,别一个是参数数组,call() 传递给函数的参数必须逐个列举出来:

    function sum(num1, num2) {
        return num1 + num2;
    }
    
    function applySum(num1, num2) {
        return sum.apply(this, arguments);
    }
    
    function applySum2(num1, num2) {
        return sum.apply(this, [num1, num2]);
    }
    
    function callSum(num1, num2) {
        return sum.call(this, num1, num2);
    }
    

    ECMAScript 还定义了一个方法:bind(),这个方法会创建一个函数的实例,其中this值会被绑定到传给bind()函数的值。

    window.color = "red";
    var o = { color : "blue"};
    
    function sayColor() {
        alert(this.color);
    }
    
    sayColor(); // red
    
    var objectSayColor = sayColor.bind(o);
    objectSayColor(); // blue
    

    哈哈这里解决了上篇 RN 文章留下 的问题 _

    相关文章

      网友评论

          本文标题:js 学习 -- 05

          本文链接:https://www.haomeiwen.com/subject/rljjpttx.html