在原型链和class中定义getter&setter有什么不同?

有这样一小段程序,描述了两个类,每个类都有一对 getter&setter 属性:

  • Test1 是在 原型链 上定义的;

  • Test2 是用 ES6 中定义的;


// Test1function Test1(val) {
  alert("1");  this.value = val;
}
Test1.prototype = {
  get value() {
    alert("2");    return this._value;
  },
  set value(val) {
    alert("3");    this._value = val;
  }
};var f1=new Test1("zj");
f1.value="sdf";console.log(f1);

运行结果是:
弹出: 1 3 3 2;
输出:

[object Object] {  _value: "sdf",  value: "sdf"}

// Test2class Test2{  constructor(val){
    alert("1");    this.value = val;
  }
  get value(){
    alert("2");    return this._value;
  }
  set value(v){
    alert("3");    this._value=v;
  }
}var f2=new Test2("zj");
f2.value="sdf";console.log(f2);

运行结果是:
弹出: 1 3 3;
输出:

[object Object] {  _value: "sdf"}

可以看到这两种方式定义的getter&setter结果是不一样的,请问是为什么呢?


呼啦一阵风
浏览 642回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript