知识点
匿名函数调用的this指向
JavaScript的匿名函数中this指向window
javascript中函数的this指向函数的最后调用者,而匿名函数是一个没有指针的全局变量,在非严格版中默认调用者是window,那么它的this指向的就是全局,就是window对象。
原型链与原型对象
- 原型对象是函数特有的(
prototype
),为了继承 - 所有类型的数据都有原型链(
__proto__
) - 每个实例对象(
object
)都有一个私有属性(__proto__
)指向它的原型对象(prototype
)。 - null 没有原型
new对象的过程
1、创建一个新对象
2、[[prototype]]连接:对象.`__proto__` = 原型对象.`prototype`
3、对象与函数调用的this绑定:原型对象.call(对象, …参数)
4、如果函数没有返回值,则返回新对象
代码注释
原型链的查找顺序
从当前实例属性开始查找,找到则返回,否则沿原型链向上层逐层查找,直到找到null(原型链顶端)。
- 未找到属性:输出 undefined
- 未找到方法:输出 xx is not a function(报错)
查找自身私有属性
let item;
for (item in fun1) {
if (fun1.hasOwnProperty(item)) {
console.log(item)
}
}
hasOwnProperty()
该方法来自于实例的原型=>原型对象的原型=>Object
补充图示: