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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。