gpt4 book ai didi

javascript - ES7 类 : Declaring Properties Outside of Constructor

转载 作者:可可西里 更新时间:2023-11-01 02:44:33 25 4
gpt4 key购买 nike

在构造函数内部和外部声明变量有什么区别吗?

对于函数,'this' 的绑定(bind)不同,但对于变量,我不知道是否存在差异。

class Widget {
constructor(constructorName) {
this.constructorName = constructorName;
}
nonConstructorName = "nonConstructorName1";
}



var myWidget = new Widget("myConstructorName1");

console.log(myWidget.constructorName); // "myConstructorName1"
console.log(myWidget.nonConstructorName); // "nonConstructorName1"

myWidget.constructorName = "myConstructorName2";
myWidget.nonConstructorName = "nonConstructorName2";

console.log(myWidget.constructorName); // "myConstructorName2"
console.log(myWidget.nonConstructorName); // "nonConstructorName2"

console.log(myWidget.prototype.constructorName); // "undefined"
console.log(myWidget.prototype.nonConstructorName); // "undefined"

console.log(myWidget.__proto__.constructorName); // "undefined"
console.log(myWidget.__proto__.nonConstructorName); // "undefined"

var myNewWidget = new Widget("myConstructorName3");

console.log(myNewWidget.nonConstructorName); // "nonConstructorName1"

最佳答案

在@merianos-nikos 的评论中回答...

“这里的方法是使用私有(private)的构造函数的范围来存储私有(private)数据。对于访问这些私有(private)数据的方法,它们也必须在构造函数中创建,这意味着您正在重新创建它们与每个实例一起使用。这是性能和内存损失,但有些人认为这种损失是可以接受的。”

Private properties in JavaScript ES6 classes

关于javascript - ES7 类 : Declaring Properties Outside of Constructor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34894913/

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