详解JS构造函数中this和return


Posted in Javascript onSeptember 16, 2017

先看一段代码,

function Foo(name,age){
  this.name=name;
  this.age=age;
}
var foo=new Foo("Tom",14);
foo.name;//Tom
foo.age;//14

使用构造函数实例化发生的流程:

1.建立一个foo的空对象。

2.将构造函数中的Foo的this指向对象foo。

3.foo的_proto_属性指向Foo函数的prototype原型。

4.执行构造函数中的代码。

相对于普通函数,构造函数中的this是指向实例的,而普通函数调用中的this是指向windows的。

构造函数中如果加入了return的话,分两种情况

function Foo(name,age){
  this.name=name;
  this.age=age;
  return {name:"Jeff"}
}
var foo=new Foo("Tom",14);
foo.name;//Jeff

1.return的是五种简单数据类型:String,Number,Boolean,Null,Undefined。

这种情况下,忽视return值,依然返回this对象。

2.return的是Object。

 这种情况下,不再返回this对象,而是返回return语句的返回值。

总结

以上所述是小编给大家介绍的JS构造函数中this和return,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言小编会及时回复大家的!

Javascript 相关文章推荐
JavaScript弹簧振子超简洁版 完全符合能量守恒,胡克定理
Oct 25 Javascript
滚动条变色 隐藏滚动条与双击网页自动滚屏显示代码
Dec 28 Javascript
js跑步算法的实现代码
Dec 04 Javascript
js加入收藏以及使用Jquery更改透明度
Jan 26 Javascript
node.js实现端口转发
Apr 14 Javascript
angularjs实现时间轴效果的示例代码
Nov 29 Javascript
jQuery代码优化方法总结
Jan 29 jQuery
基于express中路由规则及获取请求参数的方法
Mar 12 Javascript
JS使用遮罩实现点击某区域以外时弹窗的弹出与关闭功能示例
Jul 31 Javascript
详解vue 自定义组件使用v-model 及探究其中原理
Oct 11 Javascript
js+html实现点名系统功能
Nov 05 Javascript
js验证密码强度解析
Mar 18 Javascript
Angular使用Md5加密的解决方法
Sep 16 #Javascript
使用JS实现气泡跟随鼠标移动的动画效果
Sep 16 #Javascript
EasyUI创建人员树的实例代码
Sep 15 #Javascript
webpack构建react多页面应用详解
Sep 15 #Javascript
详解Vue中一种简易路由传参办法
Sep 15 #Javascript
JavaScript实现换肤功能
Sep 15 #Javascript
jQuery实现火车票买票城市选择切换功能
Sep 15 #jQuery
You might like
php分页函数
2006/07/08 PHP
一个PHP的QRcode类与大家分享
2011/11/13 PHP
php导出生成word的方法
2015/12/25 PHP
php for 循环使用的简单实例
2016/06/02 PHP
setTimeout与setInterval在不同浏览器下的差异
2010/01/24 Javascript
script标签属性type与language使用选择
2012/12/02 Javascript
html dom节点操作(获取/修改/添加或删除)
2014/01/23 Javascript
点击显示指定元素隐藏其他同辈元素的方法
2014/02/19 Javascript
jqTransform美化表单
2015/10/10 Javascript
JavaScript实现使用Canvas绘制图形的基本教程
2016/10/27 Javascript
angular实现表单验证及提交功能
2017/02/01 Javascript
Jquery+Ajax+xml实现中国地区选择三级联动菜单效果(推荐)
2017/06/09 jQuery
bootstrapvalidator之API学习教程
2017/06/29 Javascript
NodeJS使用七牛云存储上传文件的方法
2017/07/24 NodeJs
Angular使用cli生成自定义文件、组件的方法
2018/09/04 Javascript
使用vue实现一个电子签名组件的示例代码
2020/01/06 Javascript
vue使用自定义事件的表单输入组件用法详解【日期组件与货币组件】
2020/06/01 Javascript
Python实现去除代码前行号的方法
2015/03/10 Python
使用Python中PDB模块中的命令来调试Python代码的教程
2015/03/30 Python
以Flask为例讲解Python的框架的使用方法
2015/04/29 Python
python的scikit-learn将特征转成one-hot特征的方法
2018/07/10 Python
解决Pycharm运行时找不到文件的问题
2018/10/29 Python
用Python实现数据的透视表的方法
2018/11/16 Python
如何将Pycharm中调整字体大小的方式设置为"ctrl+鼠标滚轮上下滑"
2020/11/17 Python
改变生活的男士内衣:SAXX Underwear
2019/08/28 全球购物
Engel & Bengel官网:婴儿推车、儿童房家具和婴儿设备
2019/12/28 全球购物
入团者的自我评价分享
2013/12/02 职场文书
行政部工作岗位职责范本
2014/03/05 职场文书
珍惜资源的建议书
2014/08/26 职场文书
出纳岗位职责范本
2015/03/31 职场文书
银行稽核岗位职责
2015/04/13 职场文书
看看如何用Python绘制小米新版天价logo
2021/04/20 Python
MySQL sql_mode修改不生效的原因及解决
2021/05/07 MySQL
详解MySQL 联合查询优化机制
2021/05/10 MySQL
Python实现信息管理系统
2022/06/05 Python
浅谈Redis变慢的原因及排查方法
2022/06/21 Redis