zoukankan      html  css  js  c++  java
  • js New一个函数和直接调用的区别

    使用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');

      来看下test1的值:

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

    2、使用new构造函数

      var test2 = new Test('Tom', 27, 'IT');

      来看下test2的值:

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

     最后得出一个猜测:

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

  • 相关阅读:
    [Luogu P4779] 单源最短路径(标准版)
    [Luogu P1659] 拉拉队排练
    [Luogu P3435] OKR-Periods of Words
    [Poj #2127] Greatest Common Increasing Subsequence
    [Poj #2019] Cornfields
    [Poj #1949] Chores
    关于我
    划水记录
    [AGC006C] Rabbit Exercise
    [AGC007C] Pushing Balls
  • 原文地址:https://www.cnblogs.com/hyshi/p/10901211.html
Copyright © 2011-2022 走看看