javascript中使用new与不使用实例化对象的区别


Posted in Javascript onJune 22, 2015

我们先来看个实例

function Me(name,age,job){
  this.name = name;
  this.age = age;
  this.job = job;
}

请问这以下两种实例化对象方式有什么区别呢?

var mefun1 = new Me('fei','20','it');
var mefun2 = Me('fei','20','it');

简单的说

第一种是构造函数式,即通过new运算符调用构造函数Function来创建函数
第二种不是实例化,只是调用函数把返回值赋给变量。

再扩展下

JavaScript 中并没有真正的类,但JavaScript 中有构造函数和new 运算符。构造函数用来给实例对象初始化属性和值。任何JavaScript 函数都可以用做构造函数,构造函数必须使用new 运算符作为前缀来创建新的实例。

new 运算符改变了函数的执行上下文,同时改变了return 语句的行为。实际上,使用new和构造函数很类似于传统的实现了类的语言:

// 实例化一个Me
var alice = new Me('alice', 18, 'Coder');
// 检查这个实例
assert( alice instanceof Me );

构造函数的命名通常使用驼峰命名法,首字母大写,以此和普通的函数区分开来,这是
一种习惯用法。

// 不要这么做!
Me('alice', 18, 'Coder'); //=> undefined

这个函数只会返回undefined,并且执行上下文是window(全局)对象,无意间创建了3个全局变量name,age,job。调用构造函数时不要丢掉new 关键字。

当使用new 关键字来调用构造函数时,执行上下文从全局对象(window)变成一个空的上下文,这个上下文代表了新生成的实例。因此,this 关键字指向当前创建的实例。尽管理解起来有些绕,实际上其他语言内置类机制的实现也是如此。

默认情况下,如果你的构造函数中没有返回任何内容,就会返回this——当前的上下文。

要不然就返回任意非原始类型的值.

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
JS 实现Table相同行的单元格自动合并示例代码
Aug 27 Javascript
深入理解JavaScript系列(17):面向对象编程之概论详细介绍
Mar 04 Javascript
Winform客户端向web地址传参接收参数的方法
May 17 Javascript
js正则表达式注册页面表单验证
Oct 11 Javascript
JS实现自动阅读单词(有道单词本添加功能)
Nov 14 Javascript
angularjs实现多张图片上传并预览功能
Feb 24 Javascript
详解vue-router和vue-cli以及组件之间的传值
Jul 04 Javascript
Angular4实现图片上传预览路径不安全的问题解决
Dec 25 Javascript
基于ssm框架实现layui分页效果
Jul 27 Javascript
小程序实现按下录音松开识别语音
Nov 22 Javascript
Javascript类型判断相关例题及解析
Aug 26 Javascript
使用Canvas绘制一个游戏人物属性图
Mar 25 Javascript
浅谈javascript构造函数与实例化对象
Jun 22 #Javascript
jquery分析文本里url或邮件地址为真实链接的方法
Jun 20 #Javascript
jQuery实现文本框输入同步的方法
Jun 20 #Javascript
jQuery实现带滚动导航效果的全屏滚动相册实例
Jun 19 #Javascript
jquery实现的代替传统checkbox样式插件
Jun 19 #Javascript
JQuery实现的图文自动轮播效果插件
Jun 19 #Javascript
移除AngularJS下URL中的#字符的方法
Jun 19 #Javascript
You might like
PHP日期时间函数的高级应用技巧
2009/05/16 PHP
PHP代码优化的53个细节
2014/03/03 PHP
使用新浪微博API的OAuth认证发布微博实例
2015/03/27 PHP
php数组索引与键值操作技巧实例分析
2015/06/24 PHP
IE6下focus与blur错乱的解决方案
2011/07/31 Javascript
javascript 进阶篇3 Ajax 、JSON、 Prototype介绍
2012/03/14 Javascript
关于js中alert弹出窗口文本换行问题简单详细说明
2012/12/11 Javascript
JavaScript设置首页和收藏页面的小例子
2013/11/11 Javascript
Vue0.1的过滤代码如何添加到Vue2.0直接使用
2017/08/23 Javascript
jquery操作checkbox的常用方法总结【附测试源码下载】
2019/06/10 jQuery
新手快速入门JavaScript装饰者模式与AOP
2019/06/24 Javascript
策略模式实现 Vue 动态表单验证的方法
2019/09/16 Javascript
详解Vue 项目中的几个实用组件(ts)
2019/10/29 Javascript
Vue3新特性之在Composition API中使用CSS Modules
2020/07/13 Javascript
Python字符转换
2008/09/06 Python
Python 获取新浪微博的最新公共微博实例分享
2014/07/03 Python
python3 实现的人人影视网站自动签到
2016/06/19 Python
Python标准库sched模块使用指南
2017/07/06 Python
Python中int()函数的用法浅析
2017/10/17 Python
Python二叉树的遍历操作示例【前序遍历,中序遍历,后序遍历,层序遍历】
2018/12/24 Python
python opencv如何实现图片绘制
2020/01/19 Python
关于多元线性回归分析——Python&SPSS
2020/02/24 Python
Tensorflow中的图(tf.Graph)和会话(tf.Session)的实现
2020/04/22 Python
python中加背景音乐如何操作
2020/07/19 Python
Python爬虫之App爬虫视频下载的实现
2020/12/08 Python
python中实现栈的三种方法
2020/12/19 Python
老师推荐信
2013/10/28 职场文书
厨房领班竞聘演讲稿
2014/04/23 职场文书
小学亲子活动总结
2014/07/01 职场文书
协商一致解除劳动合同协议书
2014/09/14 职场文书
大专毕业生自我鉴定范文(2篇)
2014/09/27 职场文书
机关党员三严三实心得体会
2014/10/13 职场文书
学习委员竞选稿
2015/11/20 职场文书
高一语文教学反思
2016/02/16 职场文书
《圆的面积》教学反思
2016/02/19 职场文书
pytorch model.cuda()花费时间很长的解决
2021/06/01 Python