1.箭头函数没有this,所以无法通过call去改变this,只会去外层找this。
2.箭头函数没有prototype,有_proto_。
3.箭头函数无法作为构造函数。除构造函数外其它函数都可以作为构造函数。
4.作为构造函数的函数,如果有返回值,且返回值为对象,那么在new的时候得到的结果就是这个对象,如果返回值不为对象,则创建对象。
5.javaScript的继承是基于原型,java的继承是经典继承模型。
6.===只会比较值和类型并不会比较地址值,似ta非ta。
7.原型链就是继承关系,作用就是可以从后往前层层查找,找到就截止(属性遮蔽),找到头就截止。
8.var o = {a: 1};// o —> Object.prototype —> null
9.var a = [“yo”, “whadup”, “?”];// a —> Array.prototype —> Object.prototype —> null
10.function f(){ return 2; }// f —> Function.prototype —> Object.prototype —> null
11.var a = {a: 1}; // a —> Object.prototype —> null
12.var b = Object.create(a); // b —> a —> Object.prototype —> null console.log(b.a); // 1 (继承而来)
13.var c = Object.create(b); // c —> b —> a —> Object.prototype —> null
14.var d = Object.create(null); // d —> null console.log(d.hasOwnProperty); // undefined,因为 d 没有继承 Object.prototype
15.在原型链上查找属性比较耗时,对性能有副作用,这在性能要求苛刻的情况下很重要。另外,试图访问不存在的属性时会遍历整个原型链。
16.hasOwnProperty (en-US) 是 JavaScript 中唯一一个处理属性并且不会遍历原型链的方法。(译者注:原文如此。另一种这样的方法:Object.keys())
17.简而言之, prototype 是用于类的,而 Object.getPrototypeOf() 是用于实例的(instances),两者功能一致。