第一章 面向对象编程,2024年最新面试数据库开发题目及答案

在这里插入图片描述

1.5 使用prototype原型减小消耗


因为类里面的方法都是通过this定义的,所以每次通过 new 关键字创建新对象的时候,新对象都会对类的this上的属性进行赋值,所以这些新创建的对象都会有一套自己的方法。但是有时候这么做造成的消耗是很奢侈的(每一个新对象一个比作一个朋友,对象里的方法比作搭出租车,如果每个朋友做的车都不一样,那肯定要消耗更多的钱。但是如果朋友拼的是同一辆车,那消耗自然就降低了),我们需要处理一下。

Document

在这里插入图片描述

可以看到 a 和 b 是不同的对象,但是他们的 .checkName() 方法是同一个,都是指向checkObject.prototype.checkName。

但是如果对 a.checkName方法重新定义的话,就不再指向checkObject.prototype.checkName。

1.6 prototype原型混用导致覆盖


上面使用prototype原型声明方法的方式要将prototype写很多遍,可以直接使用以下这种写法

var checkObject = function(){}

// 直接使用prototype对象

checkObject.prototype = {

checkName:function(){

console.log(‘checkName’)

},

checkEmail:function(){},

checkPassword:function(){},

}

但是两种方法不能够混用,否则如果将prototype对象赋值新对象的时候就会将原来的通过 prototype. 方式复制的方法覆盖。

Document

在这里插入图片描述

1.7 方法的链式调用(优雅)


上面使用的prototype原型可以在类上一次性定义多个原型方法,并且被通过new创建的对象继承,但是在使用的时候仍然还需要多次书写对象本身(比如1.5中的a)。但是这是可以避免的,只要在声明的每一个方法的末尾处将当前的对象返回,在JavaScript中this指向的就是当前对象,所以我们可以将它返回。改动如下:

Document

在这里插入图片描述

1.8 定义一个可以为函数添加多个方法的addMethod()方法


前面提到可以在函数对象中通过原型对象prototype收编多个变量函数,那么Function作为函数的祖先是否也可以呢?

Document

在这里插入图片描述

从上面的代码和控制台结果可以知道,Function也可以通过prototype收编变量函数,但是如果按照这种方法频繁的添加,会导致每个函数都有这些方法,从而造成不必要的开销。所以我们可以在原生对象Function上添加一个添加方法的功能方法。

1.9 定义一个既可以为函数原型添加多个方法也可以为自身添加多个方法的addMethod()方法


Document
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值