我试图了解为什么我们要在函数内执行this.xyz?
像考虑使用foo()
一样调用此函数
function foo() {
this.value = "Shivom"
console.log(this.value) //Shivom
console.log(value) //Shivom
}
这可能是
function foo() {
value = "shivom"
console.log(this.value) //shivom
console.log(value) //shivom
}
类似地,当In反应时,我正在使用websocket,有人要求我这样做
class cryptoTicker extends Component {
componentDidMount() {
this.socket = openSocket('https://coincap.io');
let updateCoinData = [...this.props.cryptoLoaded];
this.socket.on('trades', (tradeMsg) => {
componentWillUnmount() {
this.socket.disconnect();
}
代替做这样的事情
var socket;
class cryptoTicker extends Component {
componentDidMount() {
socket = openSocket('https://coincap.io');
let updateCoinData = [...this.props.cryptoLoaded];
socket.on('trades', (tradeMsg) => {
componentWillUnmount() {
socket.disconnect();
}
[问题:] 那么,什么时候以及为什么在函数内使用this.xyz?如果有人可以使用上面给出的两个示例向我解释一下?
答案 0 :(得分:1)
简而言之:
var foo;
function bar(baz) {
foo = baz;
console.log(foo);
}
以这种方式,程序中只能具有一个 foo
值。这是一个单个 /全局值。
class Foo {
constructor() {
this.foo = undefined;
}
bar(baz) {
this.foo = baz;
console.log(this.foo);
}
}
let a = new Foo;
let b = new Foo;
a.bar(42);
b.bar('fortytwo');
通过使用类和对象以及在单个对象(this
上设置属性),您可以拥有一个对象/值的多个独立实例。这就是面向对象的基础。