返回
js 的 Function 对象及创建方法
前端
2023-10-30 10:55:48
- Function对象的创建
1.1 声明式创建
声明式创建是最常见的函数创建方式,使用 function
后跟函数名和圆括号。
function funcName() {
// 函数体
}
1.2 表达式创建
表达式创建是使用函数表达式创建函数。函数表达式是一个匿名函数,没有函数名。
const func = function() {
// 函数体
};
1.3 直接创建
直接创建是使用 new Function()
构造函数创建函数。这种创建方式很少使用,通常在需要动态创建函数时使用。
const func = new Function('x', 'y', 'return x + y;');
2. Function对象的属性和方法
Function 对象具有以下属性和方法:
2.1 length
length 属性返回函数的参数个数。
function func(x, y) {
// 函数体
}
console.log(func.length); // 2
2.2 name
name 属性返回函数的名称。
function func() {
// 函数体
}
console.log(func.name); // "func"
2.3 prototype
prototype 属性返回函数的原型对象。
function func() {
// 函数体
}
console.log(func.prototype); // {}
2.4 apply()
apply() 方法调用函数,并将一个数组作为第一个参数传递给函数。
function func(x, y) {
// 函数体
}
const args = [1, 2];
func.apply(null, args); // 执行 func(1, 2)
2.5 call()
call() 方法与 apply() 方法类似,但第一个参数是函数的 this
值。
function func(x, y) {
// 函数体
}
const obj = {
x: 1,
y: 2
};
func.call(obj); // 执行 func(1, 2)
2.6 bind()
bind() 方法返回一个新的函数,该函数的 this
值被绑定为给定的值。
function func(x, y) {
// 函数体
}
const obj = {
x: 1,
y: 2
};
const boundFunc = func.bind(obj);
boundFunc(); // 执行 func(1, 2)
3. function的提升
function 具有提升特性,这意味着函数的声明会在代码执行之前被提升到代码的顶部。
func(); // 执行 func()
function func() {
// 函数体
}
4. function的覆盖
function 具有覆盖特性,这意味着函数的重新声明会覆盖之前声明的函数。
function func() {
// 函数体
}
function func() {
// 函数体
}
5. 总结
Function 对象是 JavaScript 的一个内置构造函数,用于创建新的函数对象。Function 对象具有 length、name、prototype、apply()、call() 和 bind() 等属性和方法。function 具有提升特性和覆盖特性。