js小知识点
01.this
this的指向完全由函数在哪里调用决定。
- 在ES5中,this永远指向调用它的那个对象;
- 在ES6的箭头函数中没有this绑定,this指向箭头函数定义时作用域中的this;
判断this的指向
- 全局作用域、自执行函数、定时器传进的非箭头函数的this都指向window
- 严格模式下(use strict),全局作用域中的this,指向undefined
- 构造函数中的this指向当前实例
- 事件绑定函数中的this指向当前被绑定的元素
- 箭头函数中的this指向定义箭头函数上级作用域中的this
改变this的指向
-
使用call,apply,bind。call和apply改变this指向时,函数会立即执行,bind不会
-
保存成变量(let selt = this)
-
使用箭头函数
-
使用new实例化一个对象
-
严格模式下直接调用this指向undefined
02.柯里化的概念
柯里化是一种函数的转换。指将一个函数从可调用的f(a,b,c)转换为f(a)(b)(c)
主要运用了js中函数作为返回值这一特性。
//原函数
function sum(x, y, z) {
return x + y + z
}
console.log(sum(1, 2, 3))
//柯里化该函数
function sum1(x) {
return function (y) {
return function (z) {
return x + y + z
}
}
}
console.log(sum1(1)(2)(3))
//箭头函数更为简洁
var sum2 = x => y => z => {
return x + y + z
}
console.log(sum2(1)(2)(3))
代码成就万世基积沙镇海
梦想永在凌云意意气风发