是否可以防止修改对象的特定键值?

时间:2018-09-05 05:14:24

标签: javascript

我想防止编辑对象的特定键值。表示应该只初始化一次。 假设有一个构造函数Student(fname,lname,id)。

function Student(fname,lname,id){
     this.fname = fname;
     this.lanme= lname;
     this.id= id;
}

var st1 = new Student ('surya','pratap',1)

我只想防止对st1.fname和lname的ID进行修改。

2 个答案:

答案 0 :(得分:4)

有两种方法可以实现,到目前为止,最简单的方法是:

function Student(fname,lname,id){
     this.fname = fname;
     this.lanme= lname;
     this.id=id;
     Object.defineProperty(this, "id", {
      writable: false,
      value: id,
      configurable: false
    });
}

答案 1 :(得分:0)

在es6中,您可以使用Symbol s来做到这一点:

const 
  ID = Symbol(),
  NAME = Symbol()
;

export default class Student {

  constructor(id, name) {
    this[ID] = id;
    this[NAME] = name;
  }

  get id () { return this[ID]; }

  get name () { return this[NAME]; }
}