菁英数字科技(猩码)-猩码学苑-专注软件开发人才菁英教育

标题: 巨朝阳-20221125-JS高级-DAY03 [打印本页]

作者: 云云    时间: 2022-11-29 00:12
标题: 巨朝阳-20221125-JS高级-DAY03
本帖最后由 云云 于 2022-11-29 00:15 编辑

一、今日学习
# 1.方法过载

如果方法挂载在this上,那么每一个new出来的实例对象都有一份方法的副本,如果new100个实例对象,就有100个方法副本,这种就被称为方法过载。



实例对象的隐式原型( `__proto__`)和构造函数的显式原型(prototype)是一个东西

# 2.原型与原型链

## 2.1原型:

1.每个函数(特指构造函数),都有一个prototype(显式原型)原型,它的值是一个对象,只要往这个对象中添加方法,这些方法都会被new出来的实例对象共享

2.实例对象:都有一个属性`__proto__`隐式原型(新版浏览器[[prototype]]),等于自己构造函数的显式原型prototype

3.原型对象里,有一个constructor,指向构造函数自己本身

原型的作用:添加共享的方法

## 2.2原型链

1.原型prototype本身也是一个实例对象,也有自己的构造函数,它的构造函数是Object,原型prototype也有属性`__proto__`隐式原型,指向的是Object的显式原型prototype

2.Object的显式原型prototype也是实例对象,也有`__proto__`,指向null

3.Object的prototype上有一个属性constructor,指向构造函数Object自己本身



#### 作用:实例对象去查找方法,先找自己,自己没有,沿着原型链找,找到就使用,直到找到Object为止,找不到就报错

## 3.this指向

```javascript
1.全局中的this---指向windown:谁调用指向谁
2.函数中的this---指向window:谁调用指向谁
3.对象方法中的this---对象:对象调用的,谁调用指向谁
4.构造函数中的this---实例对象
5.定时器的回调中---window
6.事件处理函数中---事件源
7.箭头函数---上一级,箭头函数没有自己的this指向,他的this绑定定义函数所处的作用域
```

## 3.1修改this的指向

```javascript
1.call()和apply()
这两个方法都可以修改this的指向
这两个方法,都可以调用函数,在调用函数的同时可以制定this的指向

函数名();//谁调用就指向谁
函数名.call(this对象,实参1,实参2)//不确定个数的参数,第一个参数是新的this指向,后面的参数按照所需要的实参依次传入
参数名.apply(this对象,[实参1,实参2])//两个参数,第一个参数是新的this指向,第二个参数是一个数组,数组中传入实参

2.bind()
可以把一个函数的this绑定到一个目标对象上,然后返回一个新的函数,此后,只要调用新函数,新函数的this永远指向目标对象
```






欢迎光临 菁英数字科技(猩码)-猩码学苑-专注软件开发人才菁英教育 (http://www.xingmaxueyuan.com/) Powered by Discuz! X3.4