new关键字和this关键字分别代表什么?作用是什么?都在哪使用的

new 关键字:

  • 代表通过构造函数创建一个新的对象实例。

  • 作用是调用构造函数,并将该构造函数内部的 this 绑定到新创建的对象上。

  • 使用 new 关键字创建对象实例。

  • 使用案例

    function Person(name) {
      // 在构造函数中,this关键字指向新创建的对象实例
      this.name = name;
    }
    
    const person1 = new Person('Alice');
    console.log(person1.name); // 输出 "Alice" 
    
  • 注释:

    • 第4行:定义了一个构造函数 Person

    • 第7行:使用 new 关键字调用 Person 构造函数创建一个新的对象实例 person1

    • 第8行:输出 person1 的 name 属性,结果为 "Alice"。

  • this 关键字

    • 代表当前执行上下文中的对象。

    • 作用是引用当前对象,用于访问和操作对象的属性和方法。

    • 使用场景包括全局作用域、函数内部、对象方法等。

    • 使用案例:

      const car = {
        brand: 'Tesla',
        getModel: function() {
          // 在对象方法中,this关键字指向当前对象car
          return this.brand;
        }
      };
      
      console.log(car.getModel()); // 输出 "Tesla"
      

    • 注释:

      • 第2行:定义了一个对象 car,其中有一个属性 brand 和一个方法 getModel

      • 第4行:在 getModel 方法中使用 this 关键字引用当前对象 car 的 brand 属性。

      • 第7行:输出调用 car 的 getModel 方法的结果,结果为 "Tesla"。

    • 通过以上代码和注释,我们可以看到 new 关键字用于创建对象实例,而 this 关键字用于引用当前对象。它们分别在创建对象和访问对象的属性、方法时发挥作用。

    • this 关键字在 JavaScript 中的指向是动态的,它的具体指向取决于函数的调用方式。下面是不同情况下 this 可能指向的对象以及相关案例和每行的注释说明:

    • 全局作用域下:

      • 在全局作用域中,this 指向全局对象(在浏览器中通常是 window 对象)。

      • 使用案例:

    • console.log(this); // 输出全局对象(在浏览器中为window对象)
      
    • 注释:

      • 第2行:输出全局对象,结果为全局对象(在浏览器中为window对象)。

    • 函数中:

      • 在函数中,this 的指向取决于函数的调用方式。

      • 如果函数使用 new 关键字调用,this 指向新创建的对象。

      • 如果函数作为对象的方法调用,this 指向调用该方法的对象。

      • 如果函数直接调用或使用箭头函数,this 取决于函数的定义方式,可能指向全局对象或者是 undefined(在严格模式下)。

      • 使用案例:

    • function Person(name) {
        console.log(this); // 在构造函数中,this指向新创建的对象
        this.name = name;
      }
      
      const person1 = new Person('Alice'); // 输出构造函数中的this指向的新对象
      console.log(person1.name); // 输出构造函数中创建的对象的name属性值
      
      const car = {
        brand: 'Tesla',
        getBrand: function() {
          console.log(this); // 在对象方法中,this指向当前对象car
          return this.brand;
        }
      };
      
      console.log(car.getBrand()); // 输出对象方法中的this指向的对象
      
    • 注释:

      • 第2行:在构造函数 Person 中输出 this 的值,结果是新创建的对象实例。

      • 第6行:将 name 属性绑定到新创建的对象实例上。

      • 第9行:创建一个 Person 对象实例 person1

      • 第10行:输出 person1 对象的 name 属性值,结果为 "Alice"。

      • 第15行:在对象 car 的方法 getBrand 中输出 this 的值,结果为当前对象 car

      • 第18行:调用 car 对象的 getBrand 方法,并输出其返回值,结果为 "Tesla"。

    • 通过以上代码和注释,我们可以看到 this 关键字在不同的使用场景中指向不同的对象,包括新创建的对象、调用方法的对象、全局对象等。

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值