()可以激活并执行函数。在小括号中可以包含零个或多个参数,参数之间通过逗号进行分隔。
function f(x,y) { //定义函数
return x * y; //返回值
}
console.log(f(f(5,6), f(7,8))); //返回1680。重复调用函数
function f(x,y) { //定义函数
return function () { //返回函数类型的数据
return x * y;
}
}
console.log(f(7,8) ()); //返回56,反复调用函数
function f() { //定义函数
return f; //返回函数自身
}
console.log(f() () () () () () () () () () () ()); //返回函数自身
当然,上述设计方法在实际开发中没有任何应用价值,不建议使用。
var obj = {
value : 0,
increment : function (inc) {
this.value += typeof inc === 'number' ? inc :1;
}
}
obj.increment();
console.log(obj.value); //1
obj.increment(2);
console.log(obj.value); //2
使用点语法可以调用对象 obj 的方法 increment,然后通过 increment 方法改写 value 属性的值。在 increment 方法中可以使用 this 访问 obj 对象,然后使用 obj.value 方式读写 value 属性值。
function.call(thisobj, args...)
function.apply(thisobj, [args])
function f(x,y) { //定义求和函数
return x + y;
}
console.log(f.call (null, 3, 4)); //返回7
在上面示例中,f 是一个简单的求和函数,通过 call 方法把函数 f 绑定到空对象 null 身上,以实现动态调用函数 f,同时把参数 3 和 4 传递给函数 f,返回值为 7。实际上,f.call(null,3,4) 等价于 null.m(3,4)。
function f(x,y) { //定义求和函数
return x + y;
}
console.log(f.apply(null, [3,4])); //返回7
如果把一个数组或伪类数组的所有元素作为参数进行传递,使用 apply 方法就非常便利。
function max() { //求最大值函数
var m = Number.NEGATIVE_INFINITY; //声明一个负无穷大的数值
for (var i = 0; i < arguments.length; i ++) { //遍历所有实参
if (arguments[i] > m) //如果实参值大于变量m
m = arguments[i]; //则把该实参值赋值给m
}
return m; //返回最大值
}
var a = [23,45,2,46,62,45,56,63]; //声明并初始化数组
var m = max.apply(Object, a); //动态调用max,绑定为Object的方法
console.log(m); //返回63
在上面示例中,设计定义一个函数 max(),用来计算所有参数中的最大值参数。首先通过 apply 方法动态调用 max() 函数,然后把它绑定为 Object 对象的一个方法,并把包含多个值的数组传递给它,最后返回经过 max() 计算后的最大数组元素。var a = [23,45,2,46,62,45,56,63]; //定义并初始化数组 var m = Math.max.apply(Object, a); //调用系统函数max console.log(m); //返回63
function f() {
return "函数f";
}
var obj = {};
f.call(obj); //把函数f绑定为obj对象的方法
console.log(obj.f()); //再次调用该方法,则返回编译错误
function (x,y) { //定义函数
console.log("x =" + x + ", y =" + y);
}
new f(3,4);
使用 new 命令调用函数时,返回的是对象,而不是 return 的返回值。如果不需要返回值,或者 return 的返回值是对象,则可以选用 new 间接调用函数。
版权说明:Copyright © 广州松河信息科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州松河信息科技有限公司 版权所有