javascript - JS 使用“构造函数”和“内置对象(Object)”创建对象有什么区别?

查看:159
本文介绍了javascript - JS 使用“构造函数”和“内置对象(Object)”创建对象有什么区别?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

var myArr = Object();
myArr.name = "javascript";
myArr.age = 2017;
console.log(myArr);//Object {name: "javascript", age: 2017}
console.log(typeof myArr);//object
console.log(myArr.name);//javascript

function Fun(){}

var a = new Fun();
a.name = "javascript";//去掉new后,Cannot set property 'name' of undefined
a.age = 2017;//去掉new后,Cannot set property 'age' of undefined
console.log(a);//Fun {name: "javascript", age: 2017}
console.log(typeof a);//object
console.log(a.name);//javascript

上面代码中,使用内置对象Object创建对象,可以不使用new,Array也可以不使用new。

但是使用构造函数创建对象的话,如果不使用new就只是一个函数的返回值,也无法创建属性。

在我的理解,他们都是对象,为什么创建的时候就有区别了呢?

这是不是因为Object本来就是对象,而构造函数是通过函数封装的对象的原因呢?

我也不知道为什么我会有好多千奇百怪的问题。。。

解决方案

Object 里面有判断有没有写 new 的代码。如果没写就返回 return new Object()。在你的 Fun 里面也可以添加。比如:

也可以

function _Fun_() {}

function Fun(){
 // 这样 new Fun() 和 Fun() 就没有区别了。
  return new _Fun_();
}

详见
http://zonxin.github.io/post/...

这篇关于javascript - JS 使用“构造函数”和“内置对象(Object)”创建对象有什么区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆