ES6中类的使用
如何创建一个类
class User{}
let User=class{}
构造函数的使用与参数初始化
class User{
constructor(name){
this.name=name;
}
}
静态属性的定义与使用
class request{
static host="http://127.0.0.1";
postBody(url){
return request.host+`/${url}`
}
}
let api = new request();
api.postBody("test");
静态方法的定义与使用()
class User{
static show=function(){}
show(){
}
}
User.show();
let user =new User();
user.show();
类中使用访问器(get 和set方法)
class User{
constructor(name) {
this._name = name;
}
set name(val) {
this._name = val
}
get name() {
return this._name
}
}
let user =new User("张三");
cnsole.log(user.name)
创建私有属性
- 命名规则保护
通过定义“_属性"的方式,来告知用户此属性为私有属性。比较随缘,如果用户乱来也没办法
class User{
constructor(name) {
this._name = name;
}
}
let user =new User("张三");
user._name="李四"
- 使用symbol
let NAME = Symbol();
class User {
constructor(name) {
this[NAME] = name;
}
}
let user = new User("张三");
console.log(user);
console.log(user[Symbo()]);
- 使用weakmap
- 使用私有属性private(#)
class User {
#name = ""
constructor(name) {
this.#name = name;
}
#check = () => {
}
}
let user = new User("张三");
类实现混入(mixin)
let Arr = {
count(key) {
return this.data.reduce((count, item) => count += item[key], 0)
},
}
class Books {
constructor(book) {
this.book = book;
}
get data() {
return this.book;
}
}
let data = [{
name: "js",
price: 145,
click: 150
},
{
name: "css",
price: 200,
click: 500
},
{
name: "java",
price: 399,
click: 10
}
]
Object.assign(Books.prototype, Arr)
let book = new Books(data);
console.dir(book.count("price"));