JavaScript面向对象

家住魔仙堡 提交于 2020-02-24 02:11:55

js就是个面向对象语言,一切皆对象

一、什么是面向对象?

举个最简单点的例子来区分 面向过程和面向对象
有一天你想吃鱼香肉丝了,怎么办呢?你有两个选择
1、自己买材料,肉,鱼香肉丝调料,蒜苔,胡萝卜等等然后切菜切肉,开炒,盛到盘子里。
2、去饭店,张开嘴:老板!来一份鱼香肉丝!
看出来区别了吗?这就是1是面向过程,2是面向对象。

二、对象实例化方式

1.字面量创建
在这里插入图片描述
弊端:这样的写法如果多生成几个(100个!)实例,写起来就非常麻烦,并且造成代码冗余。

2.内置构造函数
在这里插入图片描述
弊端:通过写一个函数,解决代码重复的问题,但还是造成了代码冗余。

3.工厂函数
在这里插入图片描述
弊端:无法判断对象属于哪个类型。
4.构造函数模式
在这里插入图片描述
弊端:每个实例调用的方法应该是一致的,但是实际上在生成实例时,各自都创建了自己的方法。消耗了内存。

三、Prototype 原型

.Javascript中所有的对象都是Object的实例,并继承Object.prototype的属性和方法,也就是说,Object.prototype是所有对象的爸爸。
在这里插入图片描述

四、原型链

让一个类型(构造函数)的原型对象 访问另外一个函数的s属性在这里插入图片描述在这里插入图片描述

查找顺序

在Js中
1.在自身的私有属性查找
2.沿着原型(链)向上查找
在这里插入图片描述一直到objec.prototype为止

五、this指向

1.普通模式下

在这里插入图片描述
指向调用函数的对象。
在这里插入图片描述
对象里面指向obj,箭头函数下this指向父级所在环境中的this对象。

2.严格模式下

在这里插入图片描述
指向具体的调用对象。如果没有就指向undefined,不会指向window。

指导思想:谁调用这个函数或者方法,this就指向谁

本人还是一个新手,如有不足望多多指正,希望在逆战班里可以越学越好加油!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!