在javascript中如何判断一个方法是new调用还是一般调用
2009-09-10 00:00:00 来源:WEB开发网核心提示:在看The.Art.and.Science.of.JavaScript 的时候,看到了这个问题,在javascript中如何判断一个方法是new调用还是一般调用,就是在javascript中如何判断一个方法是new调用还是一般调用,在书中给出的代码是 Javascript代码functionElement(){if(t
在看The.Art.and.Science.of.JavaScript 的时候,看到了这个问题,就是在javascript中如何判断一个方法是new调用还是一般调用,在书中给出的代码是
Javascript代码
function Element(){
if(this==window || 'Element' in this){
console.log("normal");
}else{
console.log("new");
}
}
可是这个代码不能解决两个问题:
1比如加上下面的代码:
Javascript代码 Element.prototype.Element=1;
这时如果调用new Element()时,由于Element 已经存在于this里面,因此会打印出normal;
这个很好解决。我是这样写的:
Javascript代码
function Element(){
if(this.__proto__==Element.prototype)
{console.log("new");}else{console.log("normal");}}
可是这时又有了第二个问题。
比如下面的代码:
Javascript代码
var test= new Element();
test.temp=Element;
test.temp();
这时的调用,也应该是normal的调用,可是依然打印出new.
实在想不出来怎么解决第二种情况,因此发出来看那位能够解决这个问题.
Tags:javascript 如何 判断
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接