面向对象以及原型链

一、模块开发
1.团队协作开发的时候,会把产品按照功能板块进行划分,每一个功能板块都有专门的人负责开发。
2.把各个板块之间公用的部门进行提取封装,后期在想实现这些功能,直接的调取引用即可(模块封装)。

二、工厂模式
1.把实现相同功能的代码进行“封装”,以此来实现“批量生产”(后期想要实现这个功能,我们只需要执行函数即可。
2.“低耦合高内聚”:减少页面中的多余代码,提高代码的重复利用率。

三、面向对象编程,需要我们掌握:“对象、类、实例”的概念
1.对象:万物皆对象
2.类:对象的具体细分(按照功能特点进行分类:大类、小类)
3.实例:类中具体的一个事物(拿出类别中的具体一个实例进行研究,那么当前类别下的其他实例也具备这些特点和特征)

四、基于构造函数创建自定义类(constructor)
1.在普通函数执行的基础上“new xxx()”,这样就不是普通函数执行了,而是构造函数执行,当前的函数名称之为“类名”,接收的返回结果是当前类的一个实例。
2.自己创建的类名,最好第一个单词首字母大写。
3.这种构造函数设计模式执行,主要用于组件、类库、插件、框架等的封装,平时编写业务逻辑一般不这样处理。

五、JS中创建值的两种方式:
1.字面量表达式
var obj = { };
2.构造函数模式
var obj = new Object();

3.不管是哪一种方式创造出来的都是Object类的实例,而实例之间是相互独立分开的,所以var xxx = { } 这种模式就是JS中的单例模式。
4.基本数据类型基于两种不同的模式创建出来的值是不一样的。
a:基于字面量方式创建出来的值是基本类型值
b:基于构造函数创建出来的值是引用类型
var num1 = 12;
var num2 = new Number(12);
console.log(typeof num1); —> Number
console.log(typeof num2); —>object

六、构造函数执行模式:
1.向普通函数执行一样,形成一个私有的作用域(栈内存) 形参赋值、变量提升 —> 私有变量。
2.【构造函数执行独有】在JS代码自上而下执行之前,首先在当前形成的私有栈中创建一个对象(创建一个堆内存:暂时不存储任何东西),并且让函数中的执行主体(THIS),指向这个新的堆内存(THIS === 创建的对象)。
3.代码自上而下执行
4.【构造函数执行独有】代码执行完成,把之前创建的堆内存地址返回(浏览器默认返回)。
5.最后推论出:
也就是我们开始创建的对象其实就是当前这个类的一个实例,我们让this指向这个实例,代码执行中的this.xxx = xxx都是给实例设置“私有属性”,最后浏览器会把默认创建的实例返回,供外面接收。

再次执行 ,就是把上面的操作克隆一份,会形成新的实例(新的内存空间),所以说实例是独立分开的。

七、构造函数执行,不谢RETURN,浏览器会默认返回创建的实例,但是如果我们自己写了return?
1.return是一个基本值,返回的结果依然是类的实例,没有受到影响。 —> return abc;
2.如果返回的是引用值,则会把默认返回的实例覆盖,此时接收到的结果就不再是当前类的实例了。 —> return {name:“abc”};
3.构造函数执行的时候,尽量减少return的使用,防止覆盖实例。
4.return还有一个结束代码执行的作用。

八:原型链
1.原型(prototype)、原型链(proto
【函数】
普通函数、类(所有的类:内置类、自己创建的类)

【对象】
普通对象、数组、正则、Math、arguments…
实例是对象类型的(除了基本类型的字面量创建的值)
prototype的值也是对象类型的、函数也是对象类型的…
2.记住原型链的三句话

    a:所有的函数数据类型都天生自带一个属性:prototype(原型),这个属性的值是一个队形,浏览器会默认给它开辟一个堆内存。
    b:在浏览器给prototype 开辟的堆内存中有一个天生自带的属性:constructor,这个属性存储的值是当前函数本身。
    c:每一个对象都有一个__proto__的属性,这个属性指向当前实例所属类的prototype(如果不能确定它是谁的实例,都是Object的实例)。

3.每一个类都把供实例调取的公共属性方法,存储到自己的原型上(原型prototype的作用就是存储一些公共的属性和方法,供它的实例调取使用)
4.基类Object的原型上的__proto__指向null,因为到最底层类,如果要指向也是指向本身,没意义。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值