前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >JavaScript高级(3) 原型链 (懵逼

JavaScript高级(3) 原型链 (懵逼

作者头像
y191024
发布2022-09-20 20:30:16
发布2022-09-20 20:30:16
1660
举报

原型链

回顾一下上节课的内容,只要是对象就会有__proto__原型存在,那么我们Star的prototype里有没有__proto__这个对象原型呢?

让我们打印试试看:

那这个__proto__指向的是谁呢?

最后经过验证就是这样的(我晕了):

原型链指的就是这一条:

所以通过这个我们就能得出JavaScript的成员查找机制(规则)

  1. 当访问一个对象的属性(包括方法)时,首先查找这个对象自身有没有该属性.
  2. 如果没有就查找它的原型(也就是__proto__指向的prototype原型对象)
  3. 如果还没有找到就查找原型对象的原型(Object的原型对象)
  4. 以此类推一直找到Object为止(null)

this指向问题

1.在构造函数中,里面的this指向的是实例对象

2.在原型对象函数里面的this指向的是实例对象

扩展内置对象

可以通过原型对象,对原来的内置对象进行扩展自定义的方法.比如给数组增加自定义求和的功能

因为Array本身是没有求和方法的,现在就来写一个试试:

注意: 数组和字符串内置对象不能给原型对象覆盖操作Array.prototype = {},只能是Array.prototype.xxx = function() {}的方式

学到这里开始感觉有点难度了qwq,继续加油吧唉

继承

ES6之前并没有给我们提供extends继承.我们可以通过构造函数+原型对象模拟实现继承,被称为组合继承

call()

调用这个函数,并且修改函数运行时的this指向

fun.call(thisArg, arg1, args2)

  • thisArg: 当前调用函数this的指向对象
  • arg1, arg2: 传递的其他参数

1.call()可以调用函数

2.call()可以改变this的指向

一开始this指向的是window这个对象,现在用call()改变this的指向,让他指向对象o.

借用父构造函数继承属性

那么该如何继承方法呢?

这时需要这样写一步,下面来分析一下

因为前面的做法导致Son的原型对象指向Father,要利用constructor指回原来的构造函数

今天先这样,等会洗个漱去学习别的了.

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 睡不着所以学编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档