JS构造函数和实例化的关系及原型引入举例分析

技术JS构造函数和实例化的关系及原型引入举例分析这篇文章主要介绍“JS构造函数和实例化的关系及原型引入举例分析”,在日常操作中,相信很多人在JS构造函数和实例化的关系及原型引入举例分析问题上存在疑惑,小编查阅了各式资料,

本文主要介绍“JS构造函数与实例化的关系以及原型导入的分析”。在日常操作中,我相信很多人对JS构造函数和实例化的关系以及原型引入的分析都有疑问。边肖查阅了各种资料,整理出简单易用的操作方法,希望能帮你解答“JS构造函数与实例化的关系以及原型介绍的分析”的疑惑!接下来,请和边肖一起学习!

1、 构造函数与实例化

当我们的编程面向对象时,首先是抽象过程=然后是实例化过程,例如,我们抽象一个人,我知道一个人的基本信息。姓名,年龄,性别,等等。

我们首先对它进行抽象,在抽象完成后,我们将其实例化。

00-1010//这个自定义构造函数正在抽象

职能人员(姓名、年龄、性别){

this.name=name

this.age=年龄;

this.sex=sex

this . say=function(){ 0

Console.log('我的名字,姓名)

}

}

//此流程已实例化。

每1=新人('思腾',300,'女');

per1 . say();//调用

//letper1=newPerson ('Si Teng ',300,'女');传递上面一行代码。

我们可以得出一个结论:

构造函数与实例对象之间的关系是:

实例需要由构造函数创建。

同时,我们可以知道实例对象的构造函数就是构造函数。

让我们证明这句话是否正确;上述代码不会改变。

console . log(per 1 . constructor==person)//返回true。充分说明:实例对象的构造函数确实是构造函数。

2、构造函数与实例化之间的关系?

功能人员(姓名、年龄等){ 0

this.name=name

this.age=年龄;

like=like;

this . say=function(){ 0

console . log(‘我可以不吃饭’);

}

}

Per1=新人(《思腾》,300,《玩》);

Per2=新人(《白前》、《10000》、《玩》);

per1 . say();

per2 . say();

console . log(per 1 . say=per 2 . say)//false

3、per1.say是否等于per2.say

因为console . log(per 1 . say==per 2 . say)//false

我们可以得出一个结论。

也就是说,per1.say()和per2.say()不调用同一个方法。

那么它们的内容是平等的吗?

console . log(per 1 . say()==per 2 . say())//true

描述内容相等。

4、per1.say不等于per2.say得出的结论

5、举例代码问题

功能人员(姓名、年龄等){ 0

this.name=name

this.age=年龄;

like=like;

n

bsp;   this.say=function(){
        console.log('我可以不吃饭');
    }
};
for (var index = 0; index < 100; index++) {
    var per=new Person("司藤",300,'耍');
    per.say();
}

这一段代码:是它在内存中开辟了100个空间。每个空间都有一个say方法。但是每一个say方法都是不同的。可是他们输出的内容是相同。或者说执行的逻辑是相同的。这样就造成了空间浪费。所以在项目中,这样就造成了浪费空间。

我们可不可以来优化呢 ?

5.2优化代码解决造成空间浪费

function comSay(){
    // 执行相同的逻辑
    console.log('我可以不吃饭')
};
function Person(name,age,like) {
    this.name=name;
    this.age=age;
    this.like=like;
    this.say=comSay;//不要加括号
};
var per1=new Person("司藤",300,'耍');
var per2=new Person('白浅','10000','耍');
console.log( per1.say==per2.say ) //true

这样我们就节约了空间。每次调用的时候,都是同一个方法。

5.3处理使用这种方法,我们还可以使用原型的方式

function Person(name,age,like) {
    this.name=name;
    this.age=age;
    this.like=like;
};
Person.prototype.comSay=function(){
    console.log('我可以不吃饭')
}
var per1=new Person("司藤",300,'耍');
var per2=new Person('白浅','10000','耍');
console.log( per1.comSay==per2.comSay ) //true
// 我们还可以通过原型来解决数据共享

原型的作用:数据共享,节约空间。

到此,关于“JS构造函数和实例化的关系及原型引入举例分析”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/123884.html

(0)

相关推荐

  • 如何使用ML.NET实现基于RFM模型的客户价值分析

    技术如何使用ML.NET实现基于RFM模型的客户价值分析本篇文章为大家展示了如何使用ML.NET实现基于RFM模型的客户价值分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。RF

    攻略 2021年11月10日
  • 怎么编写Prometheus配置文件prometheus.yml

    技术怎么编写Prometheus配置文件prometheus.yml小编给大家分享一下怎么编写Prometheus配置文件prometheus.yml,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!默认情

    攻略 2021年11月21日
  • 怎么理解PostgreSQL DBA settings选项

    技术怎么理解PostgreSQL DBA settings选项本篇内容介绍了“怎么理解PostgreSQL DBA settings选项”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大

    攻略 2021年11月8日
  • 零钱通的钱怎么转到银行卡,零钱通可以转出到另一张银行卡

    技术零钱通的钱怎么转到银行卡,零钱通可以转出到另一张银行卡零钱通的钱转到银行卡具体步骤如下零钱通的钱怎么转到银行卡:1. 打开微信app,登录,进入我的页面中。2. 在我的页面中选择“支付”,点击“零钱”,在零钱界面进入

    生活 2021年10月25日
  • 手工纸灯笼制作,幼儿园手工制作灯笼需要什么材

    技术手工纸灯笼制作,幼儿园手工制作灯笼需要什么材准备材料手工纸灯笼制作:一次性纸杯两只,红线若干,剪刀,胶水或双面胶,放焰火剩余的手柄,红色颜料和水粉笔。具体步骤:1.取一只纸杯,尽量选择横竖有参考图案的。沿纵向条纹均匀

    生活 2021年10月30日
  • 计算机网络-3-3-使用广播信道的数据链路层

    技术计算机网络-3-3-使用广播信道的数据链路层 计算机网络-3-3-使用广播信道的数据链路层使用广播信道的数据链路层
    广播信道可以进行一对多通信。
    局域网技术在计算机网络中占有非常重要的地位。
    局域网

    礼包 2021年11月9日