遍历、Object.assign、this的判断规则、类例子
对象遍历
- for … in : 循环遍历对象的属性值;
数组遍历
以下方式通过遍历数组下标得到值:
- forEach() : 遍历数组中的所有值并忽略回调函数中的返回值;
- map( callback ) : map方法对类型化数组中的元素调用提供的 callback函数,按照顺序,并且会从结果构造新的类型化数组
- every() : 会一直运行直到回调函数返回false;
- some() : 一直运行直到回调函数返回true;
以下方式直接遍历数组的值:
-
for … of : ES6提供的直接遍历数组值方法
-
Object.assign( sourceobj, targetobj)
实现对象的浅复制:
1.直接变量(例 a:2)复制目标对象的值, 源对象的值与目标对象互不影响,改变其中一方值不会影响到另一方。
2.属性值是对象(包括普通对象、函数和数组)时则复制的是引用值
this的判断规则
每个函数的this是在调用时被绑定的,this的值完全取决于函数的调用位置。
如果要判断一个运行中的函数的this绑定,就需要找到这个函数的直接调用位置。找到之后就可以顺序应用下面四条规则来判断this的绑定对象。
1 . 有new调用?绑定到新创建的对象。
2 . 由call或者apply(或者bind)调用?绑定到那个指定的对象。
3 . 由上下文对象调用?绑定到那个上下文对象。
4 . 默认:在严格模式下绑定到 undefined,否则绑定到全局对象(window)。
注意 : ES6中的
箭头函数不会使用以上四条绑定规则,而是根据当前语法作用域来决定this, 即箭头函数会继承外层函数调用的this绑定
,这和selt = this
机制一样。
例子 :
new绑定:
显示绑定,call /apply/bind
隐式绑定,上下文绑定
除了以上几种之外的其他绑定,默认绑定:
- undefined : 一个声明未定义(赋值)的变量的初始值,或没有实际参数的形式参数。它是 JavaScript 基本类型 之一。
- 一个函数如果没有使用return语句指定返回值,调用之后就会返回一个undefined值。
- null :特指对象的值未设置。它是 JavaScript 基本类型 之一。
扩展知识
其他语言中的类:
类初识:
以建筑为例子:
- 类:建筑设计图
- 实例:实际建筑物
- 构造函数:与类名相同,由他进行类的实例化,
new 类名(参数)
,充当建筑工人。
类的继承:
子类通过extends关键字继承父类的基本属性。多态技术使子类可以重写父类的方法,或直接使用父类的方法。
传统的面向类的语言中,构造函数是属于类的。然而,在JavaScript中恰好相反,它的“类”是属于构造函数的(类似Foo.prototype… 这样的类型引用)。
类可以是一个界面,一个模块,一个简单的方法。
以上内容参考书籍/文档:
《你不知道的JavaScript》
MDN