es6的Class类3种私有方法实现

一、命名上做区别

_ccc是一个仅限于内部使用的私有方法

 class a{
	//公有方法
	foo(b){
		this._ccc(b);
	}
	//私有方法
	_ccc(b){
		return this.data = b;
	}
}

二、私有方法移出模块

模块内部的方法对外都是可见的,内部使用b.call(this, b),这样b实际上是当前模型

 class a{
	//公有方法
	foo(c){
		cccc.call(this, c);
	}
}

//当前模块的私有方法
function cccc(c){
	return this.data = c;
}

三、使用Symbol值的唯一性,将私有方法名字成为一个Symbol值

下面的代码种,b和c都是Symbol值,外部无法获取到它们

const b = Symbol('b');
const c = Symbol('c');

class a{
	//公有方法
	foo(data){
		this[b](data)
	}
	//私有方法
	[b](data){
		return this[c] = data;
	}
}

你可能感兴趣的:(JavaScript学习,es6Class类,js私有方法)