函数定义方式:
1、自定义函数
function fn () {
}
2、函数表达式
let fun = function () { }
3、利用new Function('参数1', '参数2', '函数体')
let f = new Function('a', 'b', 'console.log(a + b)')
所有的函数都是Function的实例
f(1,2) // 3
image.png
函数内this的指向
调用方式不同则决定了this的指向不同,一般指向调用者
image.png image.pngconst cat = {
lives: 9,
jumps: () => {
this.lives--;
}
}
调用cat.jumps()时,如果是普通函数,该方法内部的this指向cat;如果写成上面那样的箭头函数,使得this指向全局对象,因此不会得到预期结果。这是因为对象不构成单独的作用域,导致jumps箭头函数定义时的作用域就是全局作用域。
网友评论