函数内部
ECMAScript5中函数内部有两个特殊的对象:argument和this。
ECMAScript6中又新增了new.target属性。
1.arguments
arguments是一个类数组对象,包含调用函数传入的所有参数。这个对象只有以function关键字定义函数时才会有。arguments对象还有一个callee属性,是指向arguments 对象所在函数的指针。用途是,可以让函数逻辑和函数名接触耦合。
function factorial(num){
if(num <=1){
return 1;
}
else {
return num*arguments.callee(num - 1);
}
}
虽然是递归函数,但是函数内部引用和函数名无关。
2.this
this在标准函数和箭头函数中有不同的行为。
在标准函数中,this引用的是把函数当成方法调用上下文的对象。全局使用时,this指向window。
在箭头函数中,this引用的是定义箭头函数的上下文。
this关键字也不止在函数中,更多也可以点击这里✌
3.caller
我用不上4.new.target
检测函数是否被new关键词调用。
函数属性和方法
ECMAScript中的函数是对象,因此有属性和方法。每个函数都有两个属性length和prototype。
1.length
length表示函数命名时参数的个数。2.prototype
prototype中保存着引用类型所有实例方法的地方,比如toString()、valueOf()等。
3.apply() call()
这两个方法主要用在控制函数调用上下文即函数体内this值的能力。
window.color = 'red';
let o = {
color:'blue';
}
function sayColor(){
console.log(this.color);
}
sayColor(); // red
sayColor.call(this); //red
sayColor.call(window); //red
sayColor.call(o); //blue
文章内容参考:JavaScript高级程序设计(第四版)标题样式来自:juejin.cn/post/684490…
哪里写错了就联系我🐧:54269504