类与构造函数笔试题
1.
class Calc { constructor() { this.count = 0 } increase() { this.count ++ } } const calc = new Calc() new Calc().increase() console.log(calc.count)
答案: 0
实例化了两个对象,操作其中一个对象的自增方法,不影响其他对象的属性
2.
class Bird { constructor() { console.log("I'm a bird. 🦢"); } } class Flamingo extends Bird { constructor() { console.log("I'm pink. 🌸"); super(); } } const pet = new Flamingo();
打印出来什么?
答案:
I'm pink. 🌸
I'm a bird. 🦢
js是通过原型链来实现面向对象的,super表示调用父类的构造函数,而构造函数在“new”的时候便执行,按顺序输出
3.
class Counter { #number = 10 increment() { this.#number++ } getNum() { return this.#number } } const counter = new Counter() counter.increment() console.log(counter.#number)
答案:SyntaxError Private field '#number' must be declared in an enclosing class
获取私有变量应使用get方法
4.
class Dog { constructor(name) { this.name = name; } }; class Labrador extends Dog { // 1 constructor(name, size) { this.size = size; } // 2 constructor(name, size) { super(name); this.size = size; } // 3 constructor(size) { super(name); this.size = size; } // 4 constructor(name, size) { this.name = name; this.size = size; } };
- A: 1
- B: 2
- C: 3
- D: 4
答案:B
constructor中访问this,必须调用super,1、4错,3会报name不存在,所以是2