JavaScript 函数应用

  • JavaScript apply()方法

    使用apply()方法,您可以编写可以在不同对象上使用的方法。
    apply()方法类似于call()方法(前一章)。在这个例子中fullName方法的人被应用到person1:
    // 新建一个对象:
    var person = {
      firstName: "John",
      lastName : "Doe",
      language : "en",
      get lang() {
        return this.language;
      }
    };
    
    // 使用getter显示对象的数据:
    document.getElementById("demo").innerHTML = person.lang;
    尝试一下
  • call()和apply()之间的区别

    不同之处是:
    call()方法分别采用参数。
    apply()方法将参数作为数组。
    如果要使用数组而不是参数列表,则apply()方法非常方便。
  • 带参数的apply()方法

    apply()方法接受数组中的参数:
    var person = {
      fullName: function(city, country) {
        return this.firstName + " " + this.lastName + "," + city + "," + country;
      }
    }
    var person1 = {
      firstName:"John",
      lastName: "Doe",
    }
    person.fullName.apply(person1, ["Oslo", "Norway"]);
    尝试一下
    call()方法相比:
    var person = {
      fullName: function(city, country) {
        return this.firstName + " " + this.lastName + "," + city + "," + country;
      }
    }
    var person1 = {
      firstName:"John",
      lastName: "Doe",
    }
    person.fullName.call(person1, "Oslo", "Norway");
    尝试一下
  • 在数组上模拟max方法

    您可以使用以下Math.max()方法找到最大数字(在数字列表中):
    Math.max(1,2,3);  // 返回 3
    尝试一下
    由于JavaScript数组没有max()方法,因此您可以应用Math.max()方法。
    Math.max.apply(null, [1,2,3]); // 返回 3
    尝试一下
    第一个参数(null)无关紧要。在此示例中未使用它。这些示例将给出相同的结果:
    Math.max.apply(null, [1,2,3]); // 返回 3
    尝试一下
    Math.max.apply(" ", [1,2,3]); // 返回 3
    尝试一下
    Math.max.apply(0, [1,2,3]); // 返回 3
    尝试一下
  • JavaScript严格模式

    在JavaScript严格模式下,如果方法的第一个参数apply()不是对象,它将成为被调用函数的所有者(对象)。在“非严格”模式下,它成为全局对象。