js中构造函数和对象创建的关系,使用构造函数创建对象

  js中构造函数和对象创建的关系,使用构造函数创建对象

  本文给大家带来了一些关于javascript的知识,主要介绍了JavaScript构造函数创建对象的一些相关问题。构造函数也叫构造函数和类型函数,其作用类似于对象模板。一个构造函数可以生成任意数量的实例,实例对象具有相同的属性和行为特征,但不相等。下面就让我们一起来看看,希望对你有所帮助。

  【相关推荐:javascript视频教程,web前端】

  

什么是构造函数

   JavaScript构造函数也叫构造函数和类型函数。其功能类似于对象模板。一个构造函数可以生成任意数量的实例,实例对象具有相同的属性和行为特征,但不相等。使用构造函数可以创建不同类的对象。

  

构造函数的创建

  构造函数是一个普通函数。创建方法和普通函数没有区别,构造函数用到了首字母大写

  

构造函数与普通函数的区别

  构造函数和普通函数的区别在于调用它们的方式。

  一个常见的函数是直接调用构造函数,需要用new关键字来调用

this指向问题

  ,这个的指向情况有三种形式。

  当作为函数调用时,这是窗口

  当作为方法调用时,谁调用该方法,谁就是谁。

  当作为构造函数调用时,这是新创建的对象。

  

构造函数的执行流程

  立即创建新对象。

  在函数中将新创建的对象设置为this,可以在构造函数中使用它来引用新创建的对象(即this指向新创建的对象)。

  逐行执行函数中的代码。

  将新创建的对象作为返回值返回。

  使用同一个构造函数创建的对象称为第一类对象,构造函数也称为类。我们把构造函数创建的对象称为这个类的实例。在上面的例子中,obj是一个类,Obj是这个类的一个实例。

  

构造函数实例

  创建两个类,一个人类和一个狗类。

  !DOCTYPE htmlhtml lang=enhead

  meta charset=UTF-8

  meta http-equiv= X-UA-Compatible content= IE=edge

  meta name= viewport content= width=device-width,initial-scale=1.0

  标题文档/标题

  脚本

  //构造一个创建人的类

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

  Console.log(指向:,this);

  this.name=name

  this.age=年龄;

  this.gender=性别;

  this.sayName=function(){

  console.log(this.name)

  }

  }

  //构造一个类来创建一只狗

  功能犬(姓名、年龄){

  Console.log(指向:,this);

  this.name=name

  this.age=年龄;

  this.sayHello=function(){

  Console.log(汪汪汪~ ~ );

  }

  }

  //创建人员的实例

  Var per=新人(苏亮,21,男);

  console . log(per);

  per . say name();

  //创建一只狗的实例

  Var=newdog(王采,5);

  console.log(狗);

  dog . say hello();

  /脚本/床头

  /body/html运行结果:

  构造函数的好处是我们可以区分很多不同的对象,也就是我们可以清楚的知道自己创建的是哪一类对象。普通的对象创建和工厂模式创建都无法区分对象的类型,都属于一个大类(对象)。

  

instanceof关键字

  使用instanceof检查对象是否是类的实例。

  如果是,则返回true,否则返回false。

  console.log(dog的dog实例);//真

  console . log(dog instance of Person);//假

  console . log(dog instance of Object);//true所有对象都是Object的后代,因此在执行instanceof check时,任何对象和0 Object都将返回true。

  

性能优化

  创建人员构造器

  在Person构造函数中,为每个对象添加了一个sayName方法。

  我们现在的方法是在构造函数内部创建的,也就是每次执行构造函数都会创建一个新的sayName方法。

  也就是说,所有实例的sayName都是唯一的。

  这将占用大量内存,并且将为每个新创建的对象重新创建一个新方法。

  解决方案:分别提取创建新对象的方法,如下所示

  !DOCTYPE htmlhtml lang=enhead

  meta charset=UTF-8

  meta http-equiv= X-UA-Compatible content= IE=edge

  meta name= viewport content= width=device-width,initial-scale=1.0

  标题文档/标题

  脚本

  //单独提取创建新对象的方法

  函数sayName(){

  console.log(this.name)

  }

  //构造一个创建人的类

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

  Console.log(指向:,this);

  this.name=name

  this.age=年龄;

  this.gender=性别;

  this . say name=say name;

  }

  Var per=新人(苏亮,21,男);

  Var per1=新人(小红,18,女);

  console . log(per);

  per . say name();

  per 1 . say name();

  console . log(per . say name==per 1 . say name);//真

  /脚本/床头

  /body/html

  可以看出per的sayName方法和per1的方法是一样的。这样就解决了创建不同实例会重新创建一个新的sayName方法的问题,大大减少了内存占用。

  知识扩展

  (1.)我们为什么需要构造函数:

  因为前两种创建对象的方法一次只能创建一个对象。

  (2.)什么是构造函数:

  构造器:就是把我们对象中的一些相同的属性和方法抽象出来,封装成函数。

  (3.)利用构造函数创建对象及使用方法

  构造函数的函数名从第一个单词开始,每个单词的首写字母都要大写。

  //4.在构造函数中,我们必须在属性和方法之前添加这个关键字。

  //声明构造函数语法格式:

  函数构造函数名(){

  这个。属性=值;

  这个。method=function() {}

  }

  //调用构造函数语法格式:

  新的构造函数名();下面是构造函数语法格式的一个例子:

  【相关推荐:javascript视频教程,web前端】以上是JavaScript构造函数创建对象(总结和分享)的详细内容。更多请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: