执行以下程序,输出结果为()
class Phone{
constructor(price){
this.price = price;
}
get price(){
return 999;
}
}
var p = new Phone(888);
console.log(p.price);
A
999
B
undefined
C
抛出异常
D
888
正确答案:C
当类中一个属性只有get()方法而无set()方法时,该属性是无法进行赋值的,连构造方法中的初始化都不行,因此,当对象的price属性在构造方法中进行初始化,会抛出异常。
这个应该是class底层用到了Objetct.defineProperty() : 对访问器属性price只是设置了get,set默认没有,所以price属性视为读属性
然后在第三行 this.price = price又用了设置price(set),所以会报错: price是只读的
解决: get price() {}后面加上: set price(value) {} ===> set需要参数!!! 就返回999了
标签:当类,初始化,set,构造方法,get,price,属性 From: https://www.cnblogs.com/longmo666/p/17829256.html