欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript中判斷函數(shù)是new還是()調(diào)用的區(qū)別說(shuō)明

 更新時(shí)間:2011年04月07日 23:38:19   作者:  
具名函數(shù)的各種調(diào)用方式 在之前篇幅中已經(jīng)介紹過(guò)了。這篇看看如何判斷一個(gè)函數(shù)是被new調(diào)用的,還是被其它方式調(diào)用的。
方式1
復(fù)制代碼 代碼如下:

function Person(n,a){
this.name = n;
this.age = a;
if(this instanceof Person){
alert('new調(diào)用');
}else{
alert('函數(shù)調(diào)用');
}
}
var p = new Person('jack',30); // --> new調(diào)用
Person(); // --> 函數(shù)調(diào)用

方式2
復(fù)制代碼 代碼如下:

function Person(n,a){
this.name = n;
this.age = a;
if(this instanceof arguments.callee){
alert('new調(diào)用');
}else{
alert('函數(shù)調(diào)用');
}
}
var p = new Person('jack',30); // --> new調(diào)用
Person(); // --> 函數(shù)調(diào)用

方式3
復(fù)制代碼 代碼如下:

function Person(n,a){
this.name = n;
this.age = a;
if(this.constructor === arguments.callee){
alert('new調(diào)用');
}else{
alert('函數(shù)調(diào)用');
}
}
var p = new Person('jack',30); // --> new調(diào)用
Person(); // --> 函數(shù)調(diào)用

看似很完美,但當(dāng)把函數(shù)/類作為自身實(shí)例對(duì)象的方法時(shí)調(diào)用就出問(wèn)題了
復(fù)制代碼 代碼如下:

function Person(n,a){
this.name = n;
this.age = a;
if(this.constructor === arguments.callee){
alert('new調(diào)用');
}else{
alert('函數(shù)調(diào)用');
}
}
var p = new Person('jack',30); // 先new一個(gè)對(duì)象
p.fn = Person; // 把函數(shù)/類 Person 賦值給自身對(duì)象p的fn屬性
p.fn(); // 這句調(diào)用時(shí)提示“這是new調(diào)用”,顯然不對(duì)

還有更好的方法嗎?

相關(guān)文章

最新評(píng)論