到达Javascript构造函数中未使用'this'关键字创建的变量

时间:2018-09-20 19:19:56

标签: javascript

我正在寻找如何在不使用'this'关键字的情况下到达构造函数中的变量。如果将其放在变量前面,则一切正常。

function MyQueue ()
    {
         this.collection = [];
         this.index = 0;
    }

MyQueue.prototype.isEmpty = function()
{
   return this.collection.length === 0; 
}

但是,如果删除此关键字,则在创建对象时将无法到达集合和索引。有什么办法可以达到这些变量?

function MyQueue ()
{
     let collection = [];
     let index = 0;
}


MyQueue.prototype.isEmpty = function()
{
   return this.collection.length === 0; 
}

这是行不通的。如何在构造函数中到达集合和索引?预先感谢。

1 个答案:

答案 0 :(得分:1)

  

如果我将其放在变量前面,则一切正常。

在这种情况下,您正在向队列对象添加属性。任何引用该对象的东西也将能够获得其属性

  

但是,如果删除此关键字,则在创建对象时将无法访问集合和索引。

在这种情况下,您正在创建局部变量。它们只会在当前函数以及任何嵌套函数中进行编码。

  

有什么办法可以达到这些变量?

仅在构造函数和任何嵌套函数内部。通过嵌套函数,我的意思是您可以根据需要执行以下操作:

    function MyQueue () {
      let localVariable = 3;
      this.logLocalVariable = function() {
        console.log(localVariable);
      }
    }

    const queue = new MyQueue();
    queue.logLocalVariable(); // logs 3;
    console.log(queue.localVariable) // logs undefined