1.箭頭函數(shù)需要注意的地方
????????*當要求動態(tài)上下文的時候,就不能夠使用箭頭函數(shù)嫉鲸,也就是this的固定化假颇。
????????(1)在使用=>定義函數(shù)的時候,this的指向是定義時所在的對象风秤,而不是使用時所在的對象鳖目;
????????(2)不能夠用作構(gòu)造函數(shù),這就是說缤弦,不能夠使用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