原型、this指向

2019-06-27  本文已影响0人  糕糕AA

继承:根据proto一级一级的向上查找,找到了父辈和爷爷辈的属性

new 一个对象的过程: var obj = new Foo()

  1. 创建了一个新的空对象 {}
  2. 将构造函数的作用域赋给新对象(this就指向新对象)执行构造函数的代码(为对象添加属性)
  3. 设置原型链,将obj的proto指向了 Foo 函数对象的 prototype 原型对象
  4. 返回新对象 obj

工厂模式:函数名小写,函数内部new Object(),有返回对象return X,直接调用函数可以创建

属性遮蔽:实例会现在自身查找有没有对应的属性或者方法,如果没有,就去proto上面去找,如果还没有,就继续在proto.proto去找,一直到为null,停止搜索。这种情况称为"属性遮蔽 (property shadowing)。

弊端:如果在当前实例没有的属性和方法,js就会遍历原型链上所有的属性和方法,这样很耗费性能。所以请注意代码中原型链的长度,并在必要时将其分解,以避免可能的性能问题

不要试图修改或扩展原生对象的原型:尽量不要去修改类似Object.prototype,你可能会覆盖原型属性或方法,也可能对继承自Object的实例发生不可预知的bug**

function foo(){}

var obj = {}

优先级

上一篇下一篇

猜你喜欢

热点阅读