II OOP / protoType
OOP / ProtoType

JavaScript 数据类型
基本类型:存储在栈,传递的是当前的值,修改不会影响原先的值;
引用类型:索引的引用地址,存储在栈,其值存储在堆中。
手写 call / apply / bind
call / apply / bindbind - 1 参数略有区别,会合并参数
bind - 1 参数略有区别,会合并参数bind - 2 bind后的函数还可以作为构造器使用 这该如何实现?
bind - 2 bind后的函数还可以作为构造器使用 这该如何实现?bind - 2 实现前要先看下new是如何实现的或者其内部的机制如何
当代码
new Foo(...)执行时,会发生以下事情:
一个继承自
Foo.prototype的新对象被创建。使用指定的参数调用构造函数
Foo,并将this绑定到新创建的对象。
new Foo等同于new Foo(),也就是没有指定参数列表,Foo不带任何参数调用的情况。由构造函数返回的对象就是
new表达式的结果。如果构造函数没有显式返回一个对象,则使用步骤 1 创建的对象。(一般情况下,构造函数不返回值,但是用户可以选择主动返回对象,来覆盖正常的对象创建步骤)【参考链接】: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/new
从上面代码的7-9行可以看出如下两个细节
构造函数被调用时,需要接收新的
this新的
this是以构造函数原型为原型创建的
类数组
只有基本元素及length属性
小记
slicesplice区别⬇️
slice不改变原数组,slice仅读取
splice改变原数组,splice支持替换
arguments.callee
一个已经弃用的属性
通过该方法可以在函数内部获取函数自身
主要用于解决在匿名函数内部获取函数自身
继承实现的方式方法
以上描述及解决方案均属个人观点,若您存在任何疑问及意见,还请联系本人 ✉️ 邮箱。
最后更新于
这有帮助吗?