码迷,mamicode.com
首页 > Web开发 > 详细

js中的var a = new A;与var a = new A()的区别

时间:2018-05-10 19:30:41      阅读:339      评论:0      收藏:0      [点我收藏+]

标签:区别   cal   ===   私有   rip   关键字   type   prototype   没有   

JavaScript 中的new关键字与C#,JAVA中的概念完全不一样。
  例:var a=new A();
  让我们来看看在JavaScript中的new发生了什么?
  var a={};//建立了一个新对象;
  a.__proto__=A.prototype;  //将a的原型指向A;那么a就继承了A的方法与属性!
  A.call(a);//调用了A里的构造函数;
  document.write(a.__proto__===A.prototype);//为true 
(ie不支持!因为在IE中__proto__为私有属性,不能能访问)
  所以new的作用其实就是建了一个空的对象 ,并且通过原型链记录原始对象的方法与属性

那么var a=new A()与var a=new A 的没有太大的区别,他们都说明了建立对象所需要的说明,比如a.__proto__指向谁?空对象的名字?等等。但是有一个小小的区别就是,如果A的构造为下面这种:
  function A(name,addr){
  this.name=name;
this.addr=addr;
}
那么var a=new A就不好构建对象了

js中的var a = new A;与var a = new A()的区别

标签:区别   cal   ===   私有   rip   关键字   type   prototype   没有   

原文地址:https://www.cnblogs.com/Tohold/p/9021063.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!