JavaScript的构造函数
构造函数是什么?
创建一个构造函数,专门用来创建Cat对象。
1.怎么用:
构造函数(Constructor)的创建方式和普通函数一样,但通常首字母进行大写,用于和普通函数区分,构造函数和普通函数的区别就是调用方式的不同,普通函数是直接调用,而构造函数需要使用new关键字来调用
例子:
2.返回值:
(1) 没有手动添加返回值,默认返回 this
(2) 手动添加一个基本数据类型的返回值,最终还是返回 this
(3) 手动添加一个复杂数据类型(对象)的返回值,最终返回该对象
如果指定了返回对象,那么,this对象可能被丢失。如果直接调用函数,那么,this对象指向window,并且,不会默认返回任何对象(除非显性声明返回值)。为了防止因为忘记使用new关键字而调用构造函数,可以加一些判断条件强行调用new关键字
例如:
3.使用 instanceof 可以检查一个对象是否是一个类的实例
语法:对象 instanceof 构造函数
如果是实例,则返回true,否则返回false
4.对Person类进行优化
在创建Person构造函数中,为每个对象都添加了一个haihai方法。目前我们的方法都是在构造方法内部创建的,也就是构造函数每一次执行就会创建一个新的haihai方法,也就是说所有实例的haihai都是唯一的。 这样会导致了构造函数执行一次就会创建一个新的方法。执行多少次就会创建多少个新的方法,而这些方法都是一样的,这样就导致了内存空间的浪费,其实我们可以让所有对象共享同一个方法。
总结:
一个构造函数可以通过new创建多个实例对象
创建构造函数时,里面的属性和方法前必须加this
构造函数不需要return 就可以返回结果
这是我所学到的JavaScript的构造函数,所以我要分享给你们,希望可以帮助到你们。
以上就是我的分享,新手上道,请多多指教。如果有更好的方法或不懂得地方欢迎在评论区教导和提问喔!
JavaScript的构造函数相关推荐
- javascript中构造函数的返回值问题和new对象的过程
首先明白一点:javascript中构造函数是不须要有返回值的,这一点跟java非常类似.能够觉得构造函数和普通函数的最大区别就是:构造函数中没有return语句,普通函数能够有return语句.构造 ...
- 深入理解Javascript中构造函数和原型对象的区别
在 Javascript中prototype属性的详解 这篇文章中,详细介绍了构造函数的缺点以及原型(prototype),原型链(prototype chain),构造函数(constructor) ...
- 详解JavaScript创建对象——构造函数模式
文章目录 一.什么是构造函数? 二.构造函数与普通函数的区别 1.new 2.new.target 三.使用构造函数 四.构造函数的问题 总结 一.什么是构造函数? 在一些面向对象的语言,如Java. ...
- Javascript将构造函数扩展为简单工厂
一般而言,在Javascript中创建对象时需要使用关键字new(按构造函数去调用),但是某些时候,开发者希望无论new关键字有没有被显式使用,构造函数都可以被正常调用,即构造函数同时还具备简单工厂的 ...
- 剖析javascript中构造函数
在绝大多数的编程语言中,均存在函数这一概念,其含义大概可以归纳为:包含一定语句,用于完成某些有意义的工作,如处理文本.控制输入输出或计算数值等.通过在程序代码中引入函数名称和所需的参数,可在该程序中执 ...
- JavaScript (四) ——构造函数原型 , 原型链 和继承
原型 所有引用类型都有一个_proto_属性, 属性值是对象 所有函数都有一个prototype属性 , 属性值是一个对象 所有引用类型的_proto_属性 , 都指向其构造函数的prototype ...
- Javascript非构造函数的继承
一.什么是"非构造函数"的继承? 比如,现在有一个对象,叫做"中国人". var Chinese = { nation:'中国' };还有一个对象,叫做&quo ...
- javascript中构造函数的说明
1.1 构造函数是一个模板 构造函数,是一种函数,主要用来在创建对象时对 对象 进行初始化(即为对象成员变量赋初始值),并且总是与new运算符一起使用. 1.2 new 运算符 new运算符创建一个新 ...
- JavaScript学习总结(二十)——Javascript非构造函数的继承
一.什么是"非构造函数"的继承? 比如,现在有一个对象,叫做"中国人". 1 var Chinese = { 2 nation:'中国' 3 }; 还有一个对象 ...
最新文章
- Datawhale组队学习周报(第047周)
- java基础学习(1)-jre与jdk
- 胡玮炜卸任摩拜CEO,或将成为美团大裁员的开端
- 详解正则表达式匹配方法 match()
- 微信小程序退出页面时清除定时器
- python笔记之if练习
- python实现用户输入用户名和密码不能为空_Python学习【第四篇】用户输入及判断...
- 收藏 eclipse 最常用的10个快捷键
- [振动力学] 课程考核报告:Matlab 实现邓克利法、瑞利法、里兹法、矩阵迭代法
- 用ODBC方式操作dbf文件
- 《资治通鉴-卷四(一)
- [PMZL]第1卷-误入天庭-01
- 做量化交易的第一步,Python爬取股票数据
- C++标准库分析总结(一)——<标准库简介>
- python是一种跨平台、开源、免费的高级动态编程语言吗_智慧职教: §Python是一门跨平台、开源、免费的解释型高级动态编程语言。...
- iOS调用系统通讯录获取姓名电话号码
- 小程序 uniapp 实现pdf 电子合同签名 并导出功能
- Unity笔记——FairyGUI
- 云计算基础设施软件厂商简介
- 基于Python机器学习实现的花卉识别
热门文章
- windows7 x64系统安装VC++6.0的方法探讨
- 奈奎斯特采样定理的作用即推导
- linux 18.04安装搜狗输入法后不能输出中文
- Boostnote Boost your happinesss,productiveity and creativity.
- 【无标题】平方和与立方和
- excel模板下载和导入功能
- 开发城市出租车智能调度中心
- 在make ipmitool时出现未定义的宏,多半是缺少libtool库。undefine macro xxxxx
- golang常用库之- pierrec/lz4包 | lz4命令、lz4压缩算法(高压解速度)
- 避坑spring整合mybatis事务不生效问题