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()不是对象,它将成为被调用函数的所有者(对象)。在“非严格”模式下,它成为全局对象。