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 相关文章推荐
Jquery ui css framework
Jun 28 Javascript
JQuery记住用户名和密码的具体实现
Apr 04 Javascript
js实现简单的左右两边固定广告效果实例
Apr 10 Javascript
JS实现IE状态栏文字缩放效果代码
Oct 24 Javascript
微信小程序 页面跳转传参详解
Oct 28 Javascript
JavaScript事件委托原理与用法实例分析
Jun 07 Javascript
vue移动端微信授权登录插件封装的实例
Aug 28 Javascript
微信小程序tabbar底部导航
Nov 05 Javascript
vue+高德地图写地图选址组件的方法
May 18 Javascript
javascript数组常见操作方法实例总结【连接、添加、删除、去重、排序等】
Jun 13 Javascript
selenium+java中用js来完成日期的修改
Oct 31 Javascript
vue props 一次传多个值实例
Jul 22 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的list()的一步操作给一组变量进行赋值的使用
2011/05/18 PHP
PHP中strtr字符串替换用法详解
2014/11/26 PHP
jQuery+Ajax+PHP“喜欢”评级功能实现代码
2015/10/08 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
PHP正则之正向预查与反向预查讲解与实例
2020/04/06 PHP
JS setCapture 区域外事件捕捉
2010/03/18 Javascript
javascript 精粹笔记
2010/05/09 Javascript
Node.js和MongoDB实现简单日志分析系统
2015/04/25 Javascript
js模拟淘宝网的多级选择菜单实现方法
2015/08/18 Javascript
jquery获取url参数及url加参数的方法
2015/10/26 Javascript
Javascript的表单验证-初识正则表达式
2016/03/18 Javascript
js获取上传文件的绝对路径实现方法
2016/08/02 Javascript
基于jQuery实现中英文切换导航条效果
2016/09/18 Javascript
微信小程序 参数传递详解
2016/10/24 Javascript
基于vue2.0实现的级联选择器
2017/06/09 Javascript
react-native中ListView组件点击跳转的方法示例
2017/09/30 Javascript
JS实现图片懒加载(lazyload)过程详解
2020/04/02 Javascript
[08:56]DOTA2-DPC中国联赛2月23日Recap集锦
2021/03/11 DOTA
Python黑魔法@property装饰器的使用技巧解析
2016/06/16 Python
Python进行数据提取的方法总结
2016/08/22 Python
Python类的继承和多态代码详解
2017/12/27 Python
python将一组数分成每3个一组的实例
2018/11/14 Python
Python中的pathlib.Path为什么不继承str详解
2019/06/23 Python
Python 获取numpy.array索引值的实例
2019/12/06 Python
导入tensorflow:ImportError: libcublas.so.9.0 报错
2020/01/06 Python
Python趣味实例,实现一个简单的抽奖刮刮卡
2020/07/18 Python
美国50岁以上单身人士约会平台:SilverSingles
2018/06/29 全球购物
国际贸易专业个人求职信格式
2014/02/02 职场文书
元旦红领巾广播稿
2014/02/19 职场文书
《寓言两则》教学反思
2014/02/27 职场文书
个人诉讼委托书范本
2014/10/17 职场文书
财务负责人岗位职责
2015/02/03 职场文书
2015年百日安全活动总结
2015/03/26 职场文书
单位接收证明格式
2015/06/18 职场文书
Golang实现AES对称加密的过程详解
2021/05/20 Golang
利用Apache Common将java对象池化的问题
2022/06/16 Servers