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 相关文章推荐
JS 页面自动加载函数(兼容多浏览器)
May 18 Javascript
javaScript 判断字符串是否为数字的简单方法
Jul 25 Javascript
将函数的实际参数转换成数组的方法
Jan 25 Javascript
dtree 网页树状菜单及传递对象集合到js内,动态生成节点
Apr 14 Javascript
javascript学习笔记(十三) js闭包介绍(转)
Jun 20 Javascript
动态加载js和css(外部文件)
Apr 17 Javascript
jquery中的过滤操作详细解析
Dec 02 Javascript
Jquery ui datepicker设置日期范围,如只能隔3天【实现代码】
May 04 Javascript
angularjs 中$apply,$digest,$watch详解
Oct 13 Javascript
JavaScript解析JSON格式数据的方法示例
Jan 24 Javascript
Vue 实现展开折叠效果的示例代码
Aug 27 Javascript
layer ui 导入文件之前传入数据的实例
Sep 23 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
php批量删除数据
2007/01/18 PHP
用PHP解决的一个栈的面试题
2014/07/02 PHP
php 模拟 asp.net webFrom 按钮提交事件实例
2014/10/13 PHP
thinkphp3.2.3版本的数据库增删改查实现代码
2016/09/22 PHP
php反射学习之依赖注入示例
2019/06/14 PHP
详解PHP 7.4 中数组延展操作符语法知识点
2019/07/19 PHP
神奇的代码 通杀各种网站-可随意修改复制页面内容
2008/07/17 Javascript
js几个验证函数代码
2010/03/25 Javascript
关于js获取radio和select的属性并控制的代码
2011/05/12 Javascript
简单谈谈javascript Date类型
2015/09/06 Javascript
AngularJS 让人爱不释手的八种功能
2016/03/23 Javascript
jQuery防止重复绑定事件的解决方法
2016/05/14 Javascript
js实现选项卡内容切换以及折叠和展开效果【推荐】
2017/01/08 Javascript
vue2滚动条加载更多数据实现代码
2017/01/10 Javascript
AngularJS表单提交实例详解
2017/02/18 Javascript
JS 组件系列之 bootstrap treegrid 组件封装过程
2017/04/28 Javascript
js学习总结之DOM2兼容处理this问题的解决方法
2017/07/27 Javascript
Angular.js实现获取验证码倒计时60秒按钮的简单方法
2017/10/18 Javascript
你可能不知道的前端算法之文字避让(inMap)
2018/01/12 Javascript
在vue项目中集成graphql(vue-ApolloClient)
2018/09/08 Javascript
JS实现倒序输出的几种常用方法示例
2019/04/13 Javascript
Vue如何使用混合Mixins和插件开发详解
2020/02/05 Javascript
Python IDLE入门简介
2017/12/08 Python
Python输出由1,2,3,4组成的互不相同且无重复的三位数
2018/02/01 Python
Python 统计字数的思路详解
2018/05/08 Python
Django 浅谈根据配置生成SQL语句的问题
2018/05/29 Python
django1.11.1 models 数据库同步方法
2018/05/30 Python
Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录
2018/09/13 Python
Python实现正则表达式匹配任意的邮箱方法
2018/12/20 Python
django drf框架中的user验证以及JWT拓展的介绍
2019/08/12 Python
在HTML5中使用MathML数学公式的简单讲解
2016/02/19 HTML / CSS
英国家喻户晓的折扣商场:TK Maxx
2017/05/26 全球购物
民用住房租房协议书
2014/10/29 职场文书
行政复议决定书
2015/06/24 职场文书
SQL实战演练之网上商城数据库商品类别数据操作
2021/10/24 MySQL
浅谈JavaScript作用域
2021/12/06 Javascript