Class 的私有属性是提案proposal-class-fields的一部分,这个提案只关注 Class 的属性,它并没有对 Class 的方法进行任何修改。而 Class 的私有方法是提案proposal-class-fields的一部分。 Class 的私有方法语法如下: class Foo { constructor() { this.#method(); } #method() { // ... } } 我们也可以将函...
method() { #privateFieldName; } method() { this.#privateFieldName; } 在Class 定义中引用 Class 实例的私有属性 对于私有属性,我们是不可以直接通过 Class 实例来引用的,这也是私有属性的本来含义。但是有一种情况除外,在 Class 定义中,我们可以引用 Class 实例的私有属性: class Foo { #privateValue = ...
classFoo{publicFieldName=1;#privateFieldName=2;add(){returnthis.publicFieldName+this.#privateFieldName;}} 其中,**this.#**可以简化,去掉 this 也没问题,下面两种写法是等价的: method(){#privateFieldName;} method(){this.#privateFieldName;} 在Class 定义中引用 Class 实例的私有属性 对于私有属性,...
console.log(test1.method()); // 2 console.log(new Test().method()) // 1 如果要定义一个仅供method方法内部使用的函数,且: method定义在原型上,而不是实例上 可访问#私有属性 那么可以在static块中定义 class Test1 { #a = 1 static { this.prototype.method = ((privateFn) => function() { ...
returnthis.publicFieldName+this.#privateFieldName; } } 其中,this.#可以简化,去掉 this 也没问题,下面两种写法是等价的: method() { #privateFieldName; } method() { this.#privateFieldName; } 在Class 定义中引用 Class 实例的私有属性 对于私有属性,我们是不可以直接通过 Class 实例来引用的,这也是私有...
const_privateMethod=Symbol('privateMethod');classMyClass{constructor(){// ...}[_privateMethod](){// 私有方法的实现}publicMethod(){// 调用私有方法this[_privateMethod]();}} 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ...
private:字段只能在类的主体中访问 3.1 公共实例字段 让我们再次看看前面的代码片段: classUser{constructor(name) {this.name= name; } } 表达式this.name = name创建一个实例字段名,并为其分配一个初始值。然后,可以使用属性访问器访问name字段 constuser=newUser('前端小智'); ...
this.height=Math.sqrt(value);}#privateMethod(){// 私有方法console.log('This is a private method');}protectedMethod(){// 受保护方法console.log('This is a protected method');}publicMethod(){// 公共方法console.log('This is a public method');this.#privateMethod();this.protectedMethod();...
11 var privateMethod = function(executeOtherMethod) 12 { 13 alert("privateMethod"); 14 //这里的this是window 15 //可以访问私有属性 16 alert(privateName); 17 // 无法通过this访问私有属性,因为this就是window 18 //alert(this.privateName); ...
但是,如果我们试图在 User 主体之外访问私有字段#name,则会抛出一个语法错误:SyntaxError: Private field '#name' must be declared in an enclosing class。 3.3 公共静态字段 我们还可以在类本身上定义字段:静态字段。这有助于定义类常量或存储特定于该类...