【JavaScript反射】通过class对象引用获取类名,通过class对象或类名创建对象

/**
 * 通过给定的class解析类名(给定类名则直接返回)
 * @author cuiweiqing  2011-10-9
 * @param  clzss class对象
 * @return 类名
 */
function getClassName(clzss){
	if(typeof clzss == "string"){
		return clzss;
	}
	var s = clzss.toString();
	if(s.indexOf('function') == -1){
		return null;
	}else{
		s = s.replace('function','');
		var idx = s.indexOf('(');
		s = s.substring(0, idx);
		s = s.replace(" ", "");
	}
	return s;
}

/**
 * 主窗口对象
 * @author cuiweiqing  2011-10-9
 */
function MainWindow(){
	this.name = "主窗口";
	this.getName = function(){
		return this.name;
	}
}

//第一种:通过class对象创建对象
var name = getClassName(MainWindow);
//第二种:通过类名创建对象
name = "MainWindow";
try{
	var win = eval("new "+name+"()");
	alert(win.name);//主窗口
}catch(e){
	alert("对象未找到");
}

你可能感兴趣的:(JavaScript)