首页 >

有关在js中创建对象是否加new?

web前端|js教程有关在js中创建对象是否加new?
js,构造函数,创建对象,加new
web前端-js教程
本篇文章主要给大家详细分析了js构造函数创建对象加new与不加new的问题,有这方面兴趣的参考学习下。
android 导入开尖源码,用vscode开发c 程序,ubuntu 支持asp,tomcat端口改成80,反爬虫 英文,php在线反编译,标准的seo文章泛目录,php比较好的企业网站,wordpress注册页模板下载lzw
今天看到这样一道题:
av影院诱导APP源码,vscode隐藏缩进的线,ubuntu 调用vim,tomcat关闭指定应用,node网站爬虫,php post 数据流,郴州seo优化有哪些公司,网站管理助手 二级域名,ecshop仿京东商城模板无法安装lzw
填写”TO DO”处的内容让下面代码支持a.name = “name1”; b.name = “name2”;
英文企业网站源码,ubuntu鼠标移动太快,爬虫代码怎么处理,mustache php,广西seo价格lzw
function Obj(name){// TO DO}obj. /* TO DO */ = "name2";var a = Obj("name1");var b = new Obj;

问题1:new操作符做了些什么呢?

创建一个新对象;

将构造函数的作用域赋给新对象(因此 this 就指向了这个新对象) ;

执行构造函数中的代码(为这个新对象添加属性) ;

返回新对象。

问题2:不加new操作符直接执行构造函数会发生什呢?

function Obj(name){this.name = name;console.log(this); // 严格模式下是undefined 非严格模式下是window对象}var a = Obj("name1");console.log(a); // 结果 => undefined

哦,原来只是当作正常的函数调用来执行,Obj没有返回值,故a是undefined。

两者区别总结

使用new操作符创建对象,并且构造函数没有返回值或者返回为基本数据类型,那么返回该对象,如下例:

function Obj(name){this.name = name;}var b = new Obj;console.log(b); // Obj { name: undefined }function Obj(name){this.name = name;return 'chic';}var b = new Obj;console.log(b); // 同上

如果构造函数返回一个引用类型:

function Obj(name){this.name = name;return {};}var b = new Obj;console.log(b); // {}

总结

对于不加new来执行构造函数来说,返回值就是构造函数的执行结果;对于加new关键字来执行构造函数而言,如果return的是基本数据类型,那么忽视掉该return值,如果返回的是一个引用类型,那么返回该引用类型。

那么问题答案你有了吗?

参考答案 :

function Obj(name){this.name = name;return this;}Obj.prototype.name = "name2";var a = Obj("name1");var b = new Obj;

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

在微信小程序中如何实现图片预览功能

jquery.picsign中如何使用图片标注组件

通过webpack如何打包koa2 框架app,该怎么做?

详细解读Vue组件化开发思想


有关在js中创建对象是否加new?
  • 构造函数与析构函数的原理分析
  • 构造函数与析构函数的原理分析 | 构造函数与析构函数的原理分析 ...

    有关在js中创建对象是否加new?
  • Javascript 构造函数 实例分析【javascript】
  • Javascript 构造函数 实例分析【javascript】 | Javascript 构造函数 实例分析【javascript】 ...

    有关在js中创建对象是否加new?
  • 详解JavaScript基于面向对象之创建对象
  • 详解JavaScript基于面向对象之创建对象 | 详解JavaScript基于面向对象之创建对象 ...