1.箭头函数需要注意的地方
*当要求动态上下文的时候,就不能够使用箭头函数,也就是this的固定化。
(1)在使用=>定义函数的时候,this的指向是定义时所在的对象,而不是使用时所在的对象;
(2)不能够用作构造函数,这就是说,不能够使用new命令,否则就会抛出一个错误;
(3)不能够使用arguments对象;
(4)不能使用yield命令;
class Animal {
constructor() {
this.type = "animal";
}
say(val) {
setTimeout(function () {
console.log(this); //window
console.log(this.type + " says " + val);
}, 1000)
}
}
var animal = new Animal();
animal.say("hi"); //undefined says hi
class Animal {
constructor() {
this.type = "animal";
}
say(val) {
setTimeout(() => {
console.log(this); //Animal
console.log(this.type + ' says ' + val);
}, 1000)
}
}
var animal = new Animal();
animal.say("hi"); //animal says hi
2.promise
var promise = new Promise((resolve, reject) => {
if (操作成功) {
resolve(value)
} else {
reject(error)
}
})
promise.then(function (value) {
// success
}, function (value) {
// failure
})
setTimeout(function () {
console.log(1)
}, 0);
newPromise(function executor(resolve) {
console.log(2);
for(vari = 0; i < 10000; i++) {
i == 9999 && resolve();
}
console.log(3);
}).then(function () {
console.log(4);
});
console.log(5);------------------------------2 3 5 4 1