JS使用new操作符创建对象的方法分析


Posted in Javascript onMay 30, 2019

本文实例讲述了JS使用new操作符创建对象的方法。分享给大家供大家参考,具体如下:

在编写js代码时,我们有时会需要使用函数来模拟java中的类,并用它来产生对象,在定义了一个构造函数之后我们需要使用new操作符来调用调用函数才能得到我们想要的对象。例如:

<script>
function Constructor(name){
this.name = name
}
var person1 = Constructor("张三");//undefined
var person2 = new Constructor("张三");//得到一个对象{name:"张三"}
console.log(person1);
console.log(person2);
</script>

运行结果:

JS使用new操作符创建对象的方法分析

如果我们不使用new操作符调用函数,就只会简单的执行函数,并把函数的返回值赋给person1,所以上面的例子中person1的值是undefined,.

如果我们使用new操作符调用构造函数,做了哪些事情呢?

1.构造函数没有返回值

使用new操作符调用函数,会隐式的创建一个对象(我们这里称这个对象为obj),这个对象obj是连接到构造函数的原型上的,即obj会继承构造函数原型上的属性方法,并且构造函数中的this也被绑定到了这个对象上,执行完成后这个对象会被作为返回值返回。

2.构造函数有返回值(这种情况比较少,至少我没用过)

new出来的值由返回值的prototype而定

例如:

function Constructor(name){
this.name = name
return this.name;
}
var person = new Constructor("123");//Constructor {name: "123"};Object,因为基本类型的prototype都是Object
function Constructor(name){
this.name = name
return new String(this.name);
}
var person = new Constructor("123");//String {0: "1", 1: "2", 2: "3", length: 3, [[PrimitiveValue]]: "123"},
console.log(person);

运行结果:

JS使用new操作符创建对象的方法分析

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

更多关于JavaScript相关内容还可查看本站专题:《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
javascript instanceof 与typeof使用说明
Jan 11 Javascript
jquery.post用法示例代码
Jan 03 Javascript
jquery移动节点实例
Jan 14 Javascript
jQuery ajax中使用confirm,确认是否删除的简单实例
Jun 17 Javascript
原生js实现商品放大镜效果
Jan 12 Javascript
详解jQuery事件
Jan 13 Javascript
javascript实现table单元格点击展开隐藏效果(实例代码)
Apr 10 Javascript
javascript 正则表达式分组、断言详解
Apr 20 Javascript
webpack 2.x配置reactjs基本开发环境详解
Aug 08 Javascript
解决vue中修改export default中脚本报一大堆错的问题
Aug 27 Javascript
Vue使用富文本编辑器Vue-Quill-Editor(含图片自定义上传服务、清除复制粘贴样式等)
May 15 Javascript
封装Vue Element的table表格组件的示例详解
Aug 19 Javascript
vue滚动固定顶部及修改样式的实例代码
May 30 #Javascript
简述pm2常用命令集合及配置文件说明
May 30 #Javascript
Vue实现固定定位图标滑动隐藏效果
May 30 #Javascript
浅谈Vue的响应式原理
May 30 #Javascript
vue实现固定位置显示功能
May 30 #Javascript
搭建一个Koa后端项目脚手架的方法步骤
May 30 #Javascript
JS使用cookie保存用户登录信息操作示例
May 30 #Javascript
You might like
SONY SRF-40W电路分析
2021/03/02 无线电
php模板函数 正则实现代码
2012/10/15 PHP
PHP命名空间(namespace)的动态访问及使用技巧
2014/08/18 PHP
php计算多维数组中所有值总和的方法
2015/06/24 PHP
浅谈PHP的数据库接口和技术
2016/12/09 PHP
PHP自定义函数实现数组比较功能示例
2017/10/19 PHP
php上传后台无法收到数据解决方法
2019/10/28 PHP
分享一道笔试题[有n个直线最多可以把一个平面分成多少个部分]
2012/10/12 Javascript
JS 跳转页面延迟2种方法
2013/03/29 Javascript
网页中返回顶部代码(多种方法)另附注释说明
2013/04/24 Javascript
javascript跨浏览器的属性判断方法
2014/03/16 Javascript
开源的javascript项目Kissy介绍
2014/11/28 Javascript
jQuery之DOM对象和jQuery对象的转换与区别分析
2015/01/08 Javascript
js 获取元素在页面上的偏移量的方法汇总
2015/04/13 Javascript
JavaScript 函数的执行过程
2016/05/09 Javascript
JS中使用DOM来控制HTML元素
2016/07/31 Javascript
关于javascript事件响应的基础语法总结(必看篇)
2016/12/26 Javascript
基于JavaScript实现验证码功能
2017/04/01 Javascript
js表单序列化判断空值的实例
2017/09/22 Javascript
JS大坑之19位数的Number型精度丢失问题详解
2019/04/22 Javascript
Cpy和Python的效率对比
2015/03/20 Python
python实现多线程行情抓取工具的方法
2018/02/28 Python
python去除扩展名的实例讲解
2018/04/23 Python
详解django.contirb.auth-认证
2018/07/16 Python
使用tensorflow实现线性回归
2018/09/08 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
2019/06/24 Python
解决Python安装时报缺少DLL问题【两种解决方法】
2019/07/15 Python
Python将文字转成语音并读出来的实例详解
2019/07/15 Python
python 循环数据赋值实例
2019/12/02 Python
Python按照list dict key进行排序过程解析
2020/04/04 Python
基于CSS3实现的几个小loading效果
2018/09/27 HTML / CSS
Bibloo荷兰:女士、男士和儿童的服装、鞋子和配饰
2019/02/25 全球购物
实习医生自我评价
2013/09/22 职场文书
2014年学校党建工作汇报材料
2014/11/02 职场文书
什么是检讨书?检讨书的格式及范文
2019/11/05 职场文书
Docker 镜像介绍以及commit相关操作
2022/04/13 Servers