javascript基础系列之Function

javascript基础系列之Function

实例属性

Function.prototype.arguments

1
2
3
4
5
6
// Function.prototype.arguments 已废弃,使用函数内arguments对象替代
function fn() {
console.log(arguments); // Arguments(3) [1, 2, 3, callee, ...]
console.log(Array.from(arguments)); // [1,2,3]
}
fn(1,2,3);

Function.prototype.caller

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Function.prototype.caller已废弃,被arguments.callee.caller替代。如果一个函数f是在全局作用域内被调用的,则f.caller为null,相反,如果一个函数是在另外一个函数作用域内被调用的,则f.caller指向调用它的那个函数
function fn(){
function fn1() {
console.log(fn1.caller); // fn(){...}
console.log(arguments.callee.caller); // fn(){...}
if(fn1.caller == null) {
return ("hello");
} else {
return ("world", fn1.caller);
}
}
fn1();
}
console.log(fn());

Function.prototype.displayName

1
// Function.prototype.displayName 已废弃,函数的显示名称

Function.prototype.[length|name]s

1
2
3
4
5
6
7
8
// Function.prototype.length 指名函数的形参个数
// Function.prototype.name 函数的名称
function fn1() {}
function fn2(a, b) {}
console.log(fn1.length); // 0
console.log(fn2.length); // 2
console.log(fn1.name); // fn1
console.log(fn2.name); // fn2

实例方法

Function.prototype.apply

1
2
3
4
5
6
7
8
9
// Function.prototype.apply 改变this执行上下文, 以数组形式传参
const a = 10;
const obj = {
a: 20
}
function fn(b, c) {
return this.a + b + c;
}
console.log(fn.apply(obj, [1, 2])); // 23

Function.prototype.bind

1
2
3
4
5
6
7
8
9
10
11
12
// Function.prototype.bind  返回一个新函数,修改this执行上下文,
let a = 10;
let obj = {
a: 20,
getnum() {
return this.a;
}
}
let fn = obj.getnum;
console.log(fn()); // undefined, 如果这里把var换成let,是undefined, 因为let声明的变量
let result = fn.bind(obj);
console.log(result()); // 20

Function.prototype.call

1
2
3
4
5
6
7
8
9
10
11
// Function.prototype.call 改变this执行上下文,支持n个参数传递
var a = 10;
var obj = {
a: 20,
getnum() {
return this.a;
}
}
var result = obj.getnum;
console.log(result()); // 10
console.log(obj.getnum.call(obj)); // 20

Function.prototype.toString

1
2
3
4
5
// Function.prototype.toString  表示函数源码的字符串
function fn() {
return "hello";
}
console.log(fn.toString()); // function fn(){...}
参考文档

Function