II OOP / protoType

OOP / ProtoType

JavaScript 数据类型

基本类型:存储在栈,传递的是当前的值,修改不会影响原先的值;

引用类型:索引的引用地址,存储在栈,其值存储在堆中。

手写 call / apply / bind

bind - 1 参数略有区别,会合并参数

bind - 2 bind后的函数还可以作为构造器使用 这该如何实现?

bind - 2 实现前要先看下new是如何实现的或者其内部的机制如何

当代码 new Foo(...) 执行时,会发生以下事情:

  1. 一个继承自 Foo.prototype 的新对象被创建。

  2. 使用指定的参数调用构造函数 Foo,并将 this 绑定到新创建的对象。

    • new Foo 等同于 new Foo(),也就是没有指定参数列表,Foo 不带任何参数调用的情况。

  3. 由构造函数返回的对象就是 new 表达式的结果。如果构造函数没有显式返回一个对象,则使用步骤 1 创建的对象。(一般情况下,构造函数不返回值,但是用户可以选择主动返回对象,来覆盖正常的对象创建步骤)

【参考链接】: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/new

从上面代码的7-9行可以看出如下两个细节

  1. 构造函数被调用时,需要接收新的this

  2. 新的this是以构造函数原型为原型创建的

类数组

只有基本元素及length属性

小记

slice splice 区别⬇️

  • slice 不改变原数组,slice 仅读取

  • splice 改变原数组,splice 支持替换

arguments.callee

  • 一个已经弃用的属性

  • 通过该方法可以在函数内部获取函数自身

  • 主要用于解决在匿名函数内部获取函数自身

继承实现的方式方法

以上描述及解决方案均属个人观点,若您存在任何疑问及意见,还请联系本人 ✉️ 邮箱

最后更新于

这有帮助吗?