[英]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.