关于js定义对象的问题

一直搞不懂为什么js定义日期还有数组一定要加new而定义stringnumber这类的时候不需要加new?看书的时候上面还会说objectprototypeconstru... 一直搞不懂为什么js定义日期 还有 数组一定要加new而定义string number 这类的时候不需要加new?
看书的时候上面还会说 object prototype constructor 是什么?
求大神解答
展开
 我来答
Vanilla0213
推荐于2016-08-10 · TA获得超过4415个赞
知道小有建树答主
回答量:815
采纳率:94%
帮助的人:90.2万
展开全部
  1. 基本数据类型可以直接定义。就像String str = "this is a demo";

  2. 引用数据类型得new出实例。比如class s = new class();

  3. 关于object prototype 和 constructor :

这要从对象,实例和原型三者关系说起,
如果你学过面向对象的语言或者你知道面向对象,那么一个对象可以创建一个实例,这应该没有问题,这是前提,现在开始说重点。
首先js中对象(函数(function)也是对象),可以访问到原型(prototype),
然后你通过对象得到的原型(prototype)中也会有一个给对象的指针(即constructor)
例如 :
function Person(){};
var pro = Person.prototype;//得到对象的原型
var obj = pro.constructor ; // 这样可以得到Person对象。

对象创建对象的实例就不多说了
var p = new Person(); // 创建一个对象实例 。

对象实例中也会隐含的包含一个指向prototype的指针(在safrai ,firefox,chrome,opera等浏览器中可以使用 '__proto__'来访问)
例如:
var p2 = new Person();
var proro = p2.__proto__ ;// 可以得到对象原型(prototype)的引用 ,
var bool = p2.__proto__ == Person.prototype;
alert(bool); // true 对象的原型和实例获取的原型是同一个对象,

总结:
对象和实例都可以访问到原型
对象:Person.prototype;
实例:p.__proto__ ;

原型可以访问到对象
Person.prototype.constructor;
则实例也可以访问到对象
p.__proto__.constructor ;

追问
object prototype constructor 
这三个讲的好深奥,大神能用通俗的语言讲一下么?本人比较小白
追答
这个讲归讲,程序就是靠实践为主的。动手才能更快速成长!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式