如何解决你应该使用这个参考工厂函数中的属性?
大家,我正在尝试围绕工厂函数。我想知道制作接受参数的工厂函数的正确方法是什么。
我们给它创建的对象的方法是否应该通过使用 this.properties 来引用它的属性。在他们前面?
例如:
//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();
在这两种情况下我得到相同的输出,所以有必要使用它。在工厂函数中?通常的做法是什么?谢谢你帮助我
解决方法
您的用例使用 this
只是因为返回的对象具有 name
属性。
this
的上下文是返回的对象,而不是 createPerson 函数对象
如果您在对象外有一个变量并尝试使用 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()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。