javascript中的new只是对Class的一种模拟,这个也就是说业界说的javascript的类的类不是类的原因,因为他是模拟的。
javascript中的New只不过做了5件事。
1. 创建Object;
2.查找Class的Prototyp上的所有方法,属性,复制一份给创建Object(注意吗,如果prototype上有属性是Function或者是Object,那么只复制指针);
3.将构造函数ClassA内部的This 只想创建的Object;
4.创建的Object的_preot_只想Class的prototype;
5.执行构造函数;
例子:
<script>
function classA(){
this.b=44;
}
classA.prototype.b=44;
classA.prototype.show=function(){
alert(this.b)
}
var b=new classA();
b.show();
function newClass(cls,args){
var obj={};
for(var p in cls.prototype){
obj[p]=cls.prototype[p];
}
obj._proto_=cls.prototype;
cls.apply(obj,args||[]);
return obj;
}
var k=newClass(classA);
k.show();
</script>