手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >JavaScript中判断函数是new还是()调用的区别说明
JavaScript中判断函数是new还是()调用的区别说明
摘要:方式1复制代码代码如下:functionPerson(n,a){this.name=n;this.age=a;if(thisinstance...

方式1

复制代码 代码如下:

function Person(n,a){

this.name = n;

this.age = a;

if(this instanceof Person){

alert('new调用');

}else{

alert('函数调用');

}

}

var p = new Person('jack',30); // --> new调用

Person(); // --> 函数调用

方式2

复制代码 代码如下:

function Person(n,a){

this.name = n;

this.age = a;

if(this instanceof arguments.callee){

alert('new调用');

}else{

alert('函数调用');

}

}

var p = new Person('jack',30); // --> new调用

Person(); // --> 函数调用

方式3

复制代码 代码如下:

function Person(n,a){

this.name = n;

this.age = a;

if(this.constructor === arguments.callee){

alert('new调用');

}else{

alert('函数调用');

}

}

var p = new Person('jack',30); // --> new调用

Person(); // --> 函数调用

看似很完美,但当把函数/类作为自身实例对象的方法时调用就出问题了

复制代码 代码如下:

function Person(n,a){

this.name = n;

this.age = a;

if(this.constructor === arguments.callee){

alert('new调用');

}else{

alert('函数调用');

}

}

var p = new Person('jack',30); // 先new一个对象

p.fn = Person; // 把函数/类 Person 赋值给自身对象p的fn属性

p.fn(); // 这句调用时提示“这是new调用”,显然不对

还有更好的方法吗?

【JavaScript中判断函数是new还是()调用的区别说明】相关文章:

JavaScript中setMonth()方法的使用详解

浅谈javascript中for in 和 for each in的区别

JavaScript中的blink()方法的使用

JavaScript中switch语句的用法详解

JavaScript中的substr()方法使用详解

JavaScript中substring()方法的使用

详解JavaScript中的表单验证

JavaScript中exec函数用法实例分析

JavaScript中用sort()方法对数组元素进行排序的操作

JavaScript中的setUTCDate()方法使用详解

精品推荐
分类导航