这里是Turnip的博客 Trunip的博客

Turnip的博客

添加时要说明来自博客

当前用户组: 超级管理员

最新发布

图片

第五篇--浅析javascript中的混合对象“类”

浅析JavaScript中的混合对象“类” 这里浅析的是《你不知道的JavaScript 上卷》中的混合对象“类”类就是一个解决问题的蓝图,实例化类就是把蓝图构建出来。构造函数:类中均会有一个构造函数,构造函数的作用就是,当实例化类时,会调用这个函数,可以理解为类的入口。类的继承:即子类会继承父类的行为。多态:即类继承之后的引用,会根据类的实例化来决定,就是当父类和子类定义相同的方法时,对于方法的使用取决于实例的类是哪个。多态并非是子类和父类有关联,而是子类得到了父类的副本,即类的继承就是复制。多重继承:子类可以继承多个父类。JavaScript中只有对象,并不存在实例化类。显示混入:即是直接显示的进行对象复制。 //相当于实现实例化类的函数,实际上就是一种复制function mixin(sourceObj, targetObj) {for (var key in//对不存在的情况进行复制if (!key inreturnvar1function () {'Turning on my engine.'function () {this'Steering and moving forward!'var4function () {this'Rolling on all' + this.wheels + 'Wheels!'混合复制:即先把父类复制进一个空对象A内从而得到子类(对象B),再把新内容传入子类(对象B)寄生继承:即直接在函数中new父类得到对象A,然后对A进行重写并返回。隐式混入:利用显示的this指向,将this指向到子类的上下文。 varfunction () {this.greeting = 'Hello World!'this.count = this.count ? this.count + 1 : 1//Hello World!//1varfunction () {// 隐式将this指向Another,这里cool的this是Another,即显示将something.cool的this指向了Anotherthis//Hello World!//1(非共享的something)

Turnip 2021-08-13T07:09:09.000Z 阅读145
图片

第四篇--浅析JavaScript的this绑定

JavaScript的this指向有四种绑定规则,即:1.默认绑定2.隐式绑定3.显示绑定4.new调用绑定默认绑定:即全局函数的this默认绑定到window隐式绑定:即函数在上下文对象内则绑定到上下文对象上。下转隐式丢失对比理解提一嘴隐式丢失:官方解释bar是对foo不加修饰的调用,因此丢失了obj的绑定。我的理解就是,obj.foo在执行时,是通过obj对象查询到foo并进行了调用;而bar是将foo的指针取了出来,bar得到了foo的指针,因此bar()等同于foo();显示绑定:即通过call、apply方法显示绑定this。显示绑定没有解决隐式丢失问题,即foo的绑定还是丢失了。我们需要的是具有foo功能的函数,但是这个函数已经硬硬的绑定到了我们所给的对象上了。显示绑定之硬绑定:硬硬的的绑定到我们所给的对象上,实际上就是多包裹了一层函数bind的实现原理有部分类似于此new调用绑定:构造调用,构造调用的函数会出现4种变化①创建(构造)一个全新的对象②这个对象会被直行[[Prototype]]链接③这个新对象会被绑定到函数调用的this④如果函数没有返回其他对象,则new表达式中的函数调用会自动返回这个新对象明确一点,new不是实例化类,而是调用一个新函数,只是和普通调用不同,这里是构造调用,详解见官网四中绑定的优先级:new > 显示 > 隐式 > 默认绑定

Turnip 2021-08-09T12:36:05.000Z 阅读123