JavaScript对象
以下对js对象的声明都是合法的,理解了它们,你会都js的对象类型有更深体会。
- function MyClass(){}
var obj = new MyClass();
alert(typeof obj); //result: object
alert(obj.constructor); //result: function MyClass(){}
alert(typeof obj.constructor); //result: function - function MyClass(){}
var obj = new (MyClass)();
alert(typeof obj); //result: object
alert(obj.constructor); //result: function MyClass(){}
alert(typeof obj.constructor); //result: function
//区别只在红色字体处,new操作符后跟对象的构造函数名称可以用括号括起来,然后又是括号,括号中可有参数,如果参数为零的话,后一个括号是可以省略的,即var obj = new MyClass. 在这个例子里,构造函数名称用括号括起来没有实际意义,但在下面的例子中就不同了, - var obj = new (function(){})();
alert(typeof obj);// object
alert(obj.constructor);//(function(){})
alert(typeof obj.constructor);//function
//和上例大致相同,区别在红色处采用了匿名函数,括着红色字体的括号也是可以省略的但,这里加上,会使代码更易读些。其实红色区域放置任何typeof为function的对象都可以,所以 - var obj = new (new Function())();
alert(typeof obj);// object
alert(obj.constructor);//function anonymous(){}
alert(typeof obj.constructor);//function
//或者 - function MyClass(){}
var o = new MyClass();
var obj = new o.constructor();
//都是合法的
//下面的代码能让你看到括号的作用 - (
obj = {
init:function(){ alert("message"); }
}
).init(); // result: message