- arguments:获取函数的实参,已经被废弃了,现在推荐的做法是使用函数内部可用的
arguments
对象来访问函数的实参。
- (废弃的意思:已经从 Web 标准中删除,虽然一些浏览器目前仍然支持它,但也许会在未来的某个时间停止支持,请尽量不要使用该特性。 )
- length:获取形参的长度
- name:获取函数的名字,此属性不允许修改
- caller: 用于获取当前在函数是在哪个函数中调用的,已经被废弃了。
- constructor:指向当前构造函数,Function
- call:调用函数,重新指向this
- apply:调用函数,重新指向this
- bind:重新指向this,返回一个新的函数,不调用。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script>
// 介绍Function.prototype原型成员
// 奇葩:在js中函数是一等公民(特殊)
console.dir(Function.prototype); // 是个函数类型
// call apply bind
// 1. arguments 是 Function.prototype原型中的一个属性
// 废弃:标准中已经删除了该属性,但是有些浏览器可能还支持
/*function fn(){
console.log(fn.arguments); // 废弃,老版本的写法
// arguments 内置对象
console.log(arguments); // 推荐的写法来获取实参列表
}
fn(10, 20, 30);*/
// 2.caller 废弃,可以获取函数是在哪个函数内被调用的。
/*function fn(){
function foo(){
console.log(foo.caller);
}
foo();
}
fn();*/
// 3.length 获取形参的个数
/*function fn(a, b, c, d){
}
console.log(fn.length);*/
/*function sum(n1, n2 ,n3){
// 需求: 只有在实参的个数等于形参的个数的时候,才执行打印
if(arguments.length != sum.length){
return;
}
console.log(n1 + n2 + n3);
}
sum(10, 20, 40)*/
// name: 可以用来获取函数名
// name 属性是只读的属性
/*function fn2(){
}
fn2.name = "fn3";
console.log(fn2.name); // fn2*/
// toString 转字符串
function fn3(){
console.log(1);
}
console.log(fn3.toString());
</script>
</body>
</html>