1. this指向問題
<script>
let obj = {a: function () {console.log(this); // 打印出:{a: ?, b: ?}},b: () => {console.log(this); // 打印出Window {window: Window, self: Window,...}},
};
obj.a();
obj.b();
</script>
箭頭函數中的this是在箭頭函數定義時就決定的,而且是不可修改的(call,apply,bind)
箭頭函數的this指向定義的時候,外層第一個普通函數的this
<script>
let obj = {run: function(){return () => {console.log( this ); // 打印出:{run: ?}}}
}
obj.run()();
</script>
2. 箭頭函數不能new(也就是不能當作構造函數)
<script>
let run = ()=>{return 1111
}
console.log( new run() ); // 會報錯:run is not a constructor
</script>
3. 箭頭函數沒有prototype(原型對象)
<script>
let run = ()=>{return 1111
}
console.log( run.prototype ); // 打印出:undefined
</script>
4. 箭頭函數沒有arguments
/* 箭頭函數沒有arguments */
<script>
let run = ()=>{console.log( arguments ); // 會報錯arguments is not defined
}
run();
</script>/* 普通函數是一定有arguments的 */
<script>
let run = function (){console.log( arguments ); // 打印出:Arguments [callee: ?, Symbol(Symbol.iterator): ?]
}
run();
</script>