learn-JavaScript

我需要更深入一点

Posted by tsengkasing on 2017-04-22

这篇文章是单纯写给自己看的orz

发现自己对JavaScript并没有那么熟悉,于是决定更加系统的学习一波

关于阅读《你不知道的JavaScript》上篇

作用域

词法作用域

ES5及之前只有函数作用域
要实现块级作用域,可以使用try catch写法强行制造一个块级作用域。。(好丑

ES6之后可以用let关键字创建块级作用域变量

this -> 动态作用域

判定this上下文方法:

  1. 默认绑定
  2. 隐式绑定
  3. 显式绑定
  4. new绑定

优先级:
new绑定>显示绑定>隐式绑定>默认绑定

不要使用null来显式绑定,容易触发默认绑定,影响全局变量 -> 创建“DMZ” Object.create(null),比{}更空,因为不会创建prototype委托。

硬绑定
套一层函数,内部使用显式绑定。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function foo() {
console.log( this.a );
}
var obj = {
a: 2
};
var bar = function() {
foo.call( obj );
};
bar(); // 2
setTimeout(bar, 100); // 2
硬绑定的bar不可能再修改它的this
bar.call( window ); // 2

ES6箭头函数 -> 将this绑定继承外层的作用域

对象

JavaScript 的 六种主要类型

  • string
  • number
  • boolean
  • null
  • undefined
  • Object

Object有很多子类型
function和array都是object的子类型

内置对象

  • String
  • Number
  • Boolean
  • Object
  • Array
  • Date
  • Error
  • RegExp

…待续

春招的面试都完了之后开始了期末项目的集中轰炸。。这个坑还是以后慢慢填。。