最近在看 Javascript 的类
var Class = function(){
var klass = function(){
this.init.apply(this, arguments);
};
klass.prototype.init = function(){};
return klass;
}
var Person = new Class;
var person = new Person;
第一个 new Class 怎么理解呢,是不是这里 new Class 相当于只是执行了 Class, 如果是这样为什么不直接写 var Person = Class(); var person = new Person;
当对一个函数使用new操作符的时候,函数内部的this会指向一个新建的对象。如果函数没有返回值,返回值就会被设定为这个新建的对象。相反,如果这个函数有返回值,那么就会按照返回值返回。
所以,以这题的执行效果而言:是的。两种方法没有区别。
Class()
和new Class()
主要区别是,后者的this指针指向了一个新的Object
,并且该Object
的constructor
指向Class
。不过在本题中,完全没有用到这个 this,所以你看不到有何区别。JavaScript没有“类”的概念,但是有“对象”的概念,是一种很特殊的语言,从无类的角度诠释了“面向对象”。顺便推销一下我的译作《JavaScript面向对象编程指南(第2版)》,希望对你的学习有帮助。
对了,
new Class;
和new Class();
这两个操作符是等价的,没有区别。