首页 > 其他 > 详细

class

时间:2019-11-03 23:43:35      阅读:81      评论:0      收藏:0      [点我收藏+]

  1、class用来干嘛的?

答:通过class关键字可以定义类。

 

2、constructor和this代表什么?

答:constructor代表构造方法。this关键字代表实例对象。class的语法如下,没有()。

class Point {
    constructor(x,y) {
        this.x = x;
        this.y = y;
    }
    
    toString() {
        return `(${this.x} 与 ${this.y})`
    }
}

 

 

3、定义类方法的时候需要注意什么?

答:前面不要加function关键字,方法之间不能用逗号隔开,否则报错。

 

4、类的数据类型是什么?

答:函数。用typeof检验类型为function。

 

5、类是怎么使用的?

答:使用new关键字。

class Point {
    doStuff(){
        console.log(111)
    }
}

let test = new Point();
test.doStuff();

 

 

 6、constructor是什么,他默认返回的是什么?

答:constructor是类的默认方法。一个类必须有constructor方法,如果没有定义,一个空的constructor方法会被默认添加。

constructor默认返回的是实例队形,即this。

 

7、类与普通函数的区别是什么?

答:类必须使用new来调用,否则报错。普通函数不使用new也可以执行。

 

8、类的this的指向是什么?要想在类的外面使用类里面的方法,怎么办?

答:类里面的this指向的是类的实例。但是一旦在类的外面使用了this,就会报错。

class Logger {
    printName(name = ‘there‘) {
        this.print(`Hello ${name}`)
    }
    print(txt){
        console.log(txt)
    }
}
const logger = new Logger();
logger.printName(); //Hello there

const {printName} = logger;
printName(); //TypeError: Cannot read property ‘print‘ of undefined

 

 

要想在类的外面使用类里面的方法,有两种解决方法,一是在构造方法中绑定this,二是使用箭头函数(在constructor里面定义,没用到过,不讲了)。

class Logger {
    constructor(){
        this.printName = this.printName.bind(this)
    }    
    printName(name = ‘there‘) {
        this.print(`Hello ${name}`)
    }
    print(txt){
        console.log(txt)
    }
}

const logger = new Logger();
const {printName} = logger;
printName(); //Hello there

 

 

 

 

 

 

五、Class表达式

可以使用表达式的形式来定义Class。

const MyClass=class Me{//类名为className
    getClassName(){
        console.log(Me.name);
    }
}

 

这段代码使用表达式创建了一个类,类名为MyClass,不是Me。而Me只在Class内部代码可用,指代当前类。比如下面这段代码:

const MyClass=class Me{//类名为className
    getClassName(){
        console.log(Me.name);
    }
}
let inst=new MyClass();
inst.getClassName();//Me
Me.name;//ReferenceError: Me is not defined

 

class

原文:https://www.cnblogs.com/qingshanyici/p/11063129.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!