我正在寻找如何在不使用'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;
}
这是行不通的。如何在构造函数中到达集合和索引?预先感谢。
答案 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