【自学】JS原型链与继承

知识点

匿名函数调用的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

补充图示:
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值