手机
当前位置:查字典教程网 >编程开发 >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中正则表达式的使用方法

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

javaScript中with函数用法实例分析

JavaScript中的blink()方法的使用

JavaScript中exec函数用法实例分析

javaScript中slice函数用法实例分析

JavaScript中的条件判断语句使用详解

JavaScript中eval函数的问题

Javascript 高阶函数使用介绍

在JavaScript中使用NaN值的方法

精品推荐
分类导航