gpt4 book ai didi

javascript - 为什么在 OO JavaScript 中使用 "this"?

转载 作者:行者123 更新时间:2023-11-28 18:26:52 25 4
gpt4 key购买 nike

我看到很多人在 JavaScript 的面向对象上下文中使用“this”关键字。类似于 Python 和其他一些语言中“self”的使用方式。在面向对象的上下文中,我已经能够通过使用“模块模式”来避免使用“this”。

例如:

var robot = (function() {
// private variables
var status = "on";
var name;

// private function
function turnOff() {
status = "off";
}

// public function
function setName(new_name) {
name = new_name;
}

return {
setName: setName
};
})();

或者,这个模式:

var robot = function(robot_name) {
// private variables
var status = "on";
var name = robot_name;

// private function
function turnOff() {
status = "off";
}

// public function
function setName(new_name) {
name = new_name;
}

return {
setName: setName
};
};

var FooBot = new robot('Foo');
var BarBot = new robot('Bar');

使用“this”只是一种偏好吗?或者,我错过了什么吗?

最佳答案

不,不是偏好。 this 对于了解您的函数在哪个对象上被调用非常有用。

在您的示例中,您不需要此信息,这就是为什么 this 对您没有用。

但是考虑一个具有多个实例的构造函数,并且每个实例都有自己的关联数据:

class Robot {
constructor(name) {
this.status = "on";
this.setName(name);
}
turnOff() {
this.status = "off";
}
setName(new_name) {
this.name = new_name;
}
}
var robotFoo = new Robot('foo');
var robotBar = new Robot('bar');

如果不使用 this,您将如何读取和存储所需实例的数据?

您可以使用静态方法并将实例作为参数传递,但这会更难看。

关于javascript - 为什么在 OO JavaScript 中使用 "this"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38935678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com