JavaScript 对象字面量 - 如何将 `this` 关键字替换为其他内容

问题描述 投票:0回答:2

有没有办法避免不断使用

this
关键字来访问当前对象的属性和方法?

我尝试了类似

Example 2
的方法,但根本不起作用。

示例1:

<script>

  var fruits = {

    printApple(){ return "Apple"; },

    printBanana(){ return "Banana"; },

    printPear(){ return "Pear"; },

    printAll(){ return "All Fruits: " + this.printApple() + ", " + this.printBanana() + ", " + this.printPear(); }

  }

  alert(fruits.printAll());

</script>

示例2:
(此脚本不起作用,请勿使用)

<script>

  var fruits = {

    y(){ return this.fruits; },

    printApple(){ return "Apple"; },

    printBanana(){ return "Banana"; },

    printPear(){ return "Pear"; },

    printAll(){ return "All Fruits: " + y.printApple() + ", " + y.printBanana() + ", " + y.printPear(); }

  }

  alert(fruits.printAll());

</script>
javascript object-literal
2个回答
-1
投票

像许多语言一样,

this
的使用是不可避免的。特别是当您需要访问同一对象的属性或方法时。

this
关键字是每个执行上下文都会获取的特殊变量,由 JS 引擎自动设置。

您的示例 2 - 该脚本不起作用,因为

y
未在全局上下文中定义。

      var fruits = {
    
        printApple(){ return "Apple"; },
    
        printBanana(){ return "Banana"; },
    
        printPear(){ return "Pear"; },
    
        printAll(){
          var self = this;
          return "All Fruits: " + self.printApple() + ", " + self.printBanana() + ", " + self.printPear(); 
        }
      }
    
      alert(fruits.printAll());


-1
投票

基本上,“不”。您确实需要引用某个对象,然后对其运行该方法。

“这是一个问题,对于示例 2,我如何避免不断使用 this 关键字,并替换为更简短的内容。或者干脆不使用。”

您可以使用可选参数,默认如下:

var fruits = {

  printApple() {
    return "Apple";
  },

  printBanana() {
    return "Banana";
  },

  printPear() {
    return "Pear";
  },

  printAll(o = this) {
    return "All Fruits: " + o.printApple() + ", " + o.printBanana() + ", " + o.printPear();
  }
}

alert(fruits.printAll());

© www.soinside.com 2019 - 2024. All rights reserved.