gpt4 book ai didi

javascript - ClassName.variable 总是静态成员变量吗?

转载 作者:行者123 更新时间:2023-12-04 16:54:07 25 4
gpt4 key购买 nike

我从未见过像下面这样的语法,其中通过附加到类名来直接初始化变量(静态成员除外)

class Fruit {
constructor(color) {
this.color = color;
}
}
Fruit.count = 0;
这个在哪里 count变量进入内存?我无法使用类实例访问它。那么,它是隐式的静态成员。它在经典原型(prototype)继承中看起来如何?提前致谢。

最佳答案

任何直接分配给类的属性,例如 Fruit.count = 0; , 被认为是一个有效的赋值 静态 变量/成员。一个实际上使用 constructor 作为命名空间。
例子 ...

class Fruit {
constructor(color) {
this.color = color;
}
}
Fruit.count = 0;

console.log('considered to be "static" ... Fruit.count :', Fruit.count);

const fruitType = new Fruit('yellow');

console.log('fruitType.constructor.count :', fruitType.constructor.count);



class Fruit {
constructor(color) {
this.color = color;
}
static count = 42;
}

console.log('literally "static" ... Fruit.count :', Fruit.count);

const fruitType = new Fruit('red');

console.log('fruitType.constructor.count :', fruitType.constructor.count);



function Fruit(color) {
this.color = color;
}
Fruit.count = 9;

console.log('old school "static" ... Fruit.count :', Fruit.count);

const fruitType = new Fruit('pink');

console.log('fruitType.constructor.count :', fruitType.constructor.count);

How will it look in Classical Prototypal Inheritance?


静态和原型(prototype)没有任何共同之处。因此,对最后一个问题不会有任何有效的答案。
但是,如果 OP 将“经典原型(prototype)继承”称为 ES3 语法,那么第三个示例代码已经回答了这个问题。

关于javascript - ClassName.variable 总是静态成员变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63991798/

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