bind 函数我们经常用到,主要用于换绑 this。其返回值是一个方法。此外我们还可以把一些参数固定下来,相当于封装了一个简易函数。
模拟实现JavaScript的apply和call方法
发表于
|
更新于:
字数统计:
810
apply 和 call 的相同点是:
- 都由一个函数调用
- 第一个参数都是原函数的执行环境 this
不同点是:
apply 的第二个参数接收原函数的所有参数,而 call 从第二个参数开始跟原函数一样是打散的
代码如下:
1 | F(arg1, arg2, ...){} |
需要特别注意的是,如果是在非严格模式下,thisArg 如果为 null 或 undefined,就会被替换成全局对象(在浏览器中是 window);如果为原始值,就会被替换成原始值的的自动包装对象。
严格模式下,thisArg 传什么就是什么。
模拟实现JavaScript的new操作符
发表于
|
更新于:
字数统计:
573
JavaScript 的 new 操作符,操作对象是一个函数(箭头函数,async 函数除外),一般来说此函数我们不自己写 return,此时返回的是个默认的对象 this。
如果自己写了返回,那么分两种情况:
- 返回的是对象或者方法,就返回我们自己写的返回内容
- 否则返回默认对象 this
JavaScript对象的继承有哪几种
发表于
|
更新于:
字数统计:
1,086
javascript 高级程序设计中有写,对象的继承总共有六种:
- 原型链继承,子原型是父原型的一个实例
- 借用构造函数继承,子构造函数调用父构造函数
- 组合式继承(组合 1 和 2)
- 原型式继承
- 寄生式继承
- 寄生式组合继承(组合 3 和 5)