注意, 问题不是如何定义私有方法, 而是如何给class的方法定义私有变量。私有方法是仅类内部可以访问, 而一个方法的私有变量是仅该方法内部可以访问, 这是2个不同的东西, 请不要混淆
let Test=function(){}
Test.prototype.method=(()=>{
let private=1
return function(){}
})()
上面是传统的构造函数加原型的方式实现的类, 可以用立即执行函数给method方法设置私有变量private。
如果改成用class实现这个类, 如何在test方法中设置私有变量呢?尝试过如下代码, 报语法错误了。
let Test=class{
method(()=>{
let private=1
return function(){}
})()
}
你的第一个例子
这样写的话,这里的
private
是所有Test
实例的method
共享的(类似静态变量)这种的话没法在
class
内部定义(除非用static
+prototype
,见文末补充),可以这样写如果是要每个实例的
method
都有自己的变量,则可以在构造函数中定义对应的
class
写法如果要定义一个仅供
method
方法内部使用的函数,且:method
定义在原型上,而不是实例上#
私有属性那么可以在
static
块中定义