当前位置: 移动技术网 > IT编程>开发语言>JavaScript > js New一个函数和直接调用的区别

js New一个函数和直接调用的区别

2019年05月22日  | 移动技术网IT编程  | 我要评论

使用new是构造函数,不使用new是函数调用,同时this指向不同。

示例:

function test(name, age, job) {

  console.log(this);

  this.name = name;

  this.age = age;

  this.job = job;

}

1、直接调用函数

  var test1 = test('tom', 27, 'it');

  来看下test2的值:

  console.log(test1); // undefined
  直接调用上下文指向是window

2、使用new构造函数

  var test2 = new test('tom', 27, 'it');

  来看下test1的值:

  console.log(test2); 
  console.log(typeof test2); // "object"
  
  new会使执行函数的上下文指向这个函数的本身。
 

 最后得出一个猜测:

如果函数返回值为常规意义上的值类型(number、string、boolean)时,new 函数将会返回一个该函数的实例对象,而如果函数返回一个引用类型(object、array、function),虽然new函数与直接调用函数产生的结果等同,但是是两个不同的过程,一个是构造对象、一个是函数调用。

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网