JavaScript中のes 6のクラスとクラスの継承(二)
14480 ワード
クラスでよく使われるキーワード static get set staticキーワード
staticは、純粋な静的方法であり、クラスのキーワードによってしかこの方法の位置にアクセスできない.
Object.definedProtyの中のgetあるいはsetと最大の違いはgetがreturnを必要として、setの中のreturnは無効です.
staticは、純粋な静的方法であり、クラスのキーワードによってしかこの方法の位置にアクセスできない.
class Methods {
constructor(){
this.handleChange = this.handleChange(); // Methods
console.log(this.printName()); //Jack
console.log(Methods.Jack); //Jack
console.log(this.Jack); //undefined
//this---- ↑↑↑ Methods---- ↑↑↑
}
handleChange(){
return Methods.FunName;
}
printName = (name = Methods.Jack) => { // ‘Jack’
return name;
};
static FunName(){
console.log(this); // console.log(this), Methods
console.log(typeof this); // :object function
return 'handleChange';
}
static get Jack(){ // Method
return 'Jack'
}
}
const methods = new Methods();
console.log(methods.handleChange() === Methods.FunName()); //true
console.log(Methods.FunName); // function
console.log(methods.FunName); // undefined
getとsetObject.definedProtyの中のgetあるいはsetと最大の違いはgetがreturnを必要として、setの中のreturnは無効です.
let str = 'nihao';
function block() {
class MyClass {
constructor() {
}
get prop() {
return 'nihao';
}
set prop(value) { //value
console.log(value);
// this.prop = value;
str = value;
}
}
class ParentClas extends MyClass{
constructor(){
super();
this.prop='haha'; // get set
// set props(value) value haha
}
}
let parentClass=new ParentClas(); //
console.log('parentClass.prop:',parentClass.prop);
parentClass.prop="heihei";
// set props(value) value heihei
console.log('parentClass.prop:',parentClass.prop);
console.log("str :", str);
// str get props
}
block();
function block2() {
class Language {
constructor(type) { //undefined
this.type = type; // undefined
}
get info() {
return this.type;
}
set info(type) {
console.log(`set :${type}`);
//set return info get
}
}
const test = new Language();
test.info = 'Python'; // info
console.log(test.info);
}
block2();
JavaScript中のes 6のクラスとクラスの継承(三)