js中的var a = new A;与var a = new A()的区别
Posted 哓番茄
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js中的var a = new A;与var a = new A()的区别相关的知识,希望对你有一定的参考价值。
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()的区别的主要内容,如果未能解决你的问题,请参考以下文章
js中var a=new Object()和var a=有啥区别吗?
js中var a=new Object()和var a={}有什么区别吗?
JS可否 var a[id] = new init();创建对象数组、进行赋值?