簡體   English   中英

你應該使用這個。 參考工廠函數中的屬性?

[英]Should you use this. in reference to a property in factory functions?

大家,我正試圖圍繞工廠功能。 我想知道制作一個接受參數的工廠 function 的正確方法是什么。

我們給它創建的對象的方法是否應該通過使用 this 來引用它的屬性。 在他們面前?

例如:

//using this. 
function createPerson(name) {
    return {
        name,
        talk() {
            console.log(this.name);
        }
    }
}

或者這樣:

//not using this. 
function createPerson(name) {
    return {
        name,
        talk() {
            console.log(name);
        }
    }
}

我都嘗試過,它們似乎都以相同的方式執行,我認為我可能錯了。 意思是如果我運行以下命令:

const marc = createPerson('marc');
const joe = createPerson('joe');
marc.talk();
joe.talk();

在這兩種情況下,我得到相同的 output,所以有必要使用它。 在工廠 function? 常見的做法是什么? 感謝你們對我的幫助

您的用例正在使用this只是因為返回的 object 具有該name屬性。

上下文是返回this object 而不是 createPerson function object

如果您要在 object 之外有一個變量並嘗試使用this訪問它,它將無法正常工作。

上下文this很復雜,我認為您很容易混淆知道this是什么在您的用例中

 //not using this. function createPerson(name) { // without using new createPerson() "this" is not the function object const upper = this.upper = name.toUpperCase(); return { name, talk() { console.log('this.upper', this.upper) console.log('upper', upper); } } } const foo= createPerson('foo') foo.talk()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM