当前位置: 代码迷 >> JavaScript >> 在对象函数中定义getter / setter
  详细解决方案

在对象函数中定义getter / setter

热度:68   发布时间:2023-06-07 16:44:20.0

我正在学习JavaScript,并且想知道是否可以在对象函数中定义getter和setter。 主要区别在于调用它的方式,如果定义为getFullName = function() ,我应该将方法调用为myObj.getFullName() ,但是,对于数组,getter允许将其作为简单属性调用myObj.fullName (不带括号)。

正如我在MDN参考( )中看到的,它可以在Object Literals中轻松完成:

var obj = {
    get var(){
        return "something";
    }
}

但是,我无法在对象函数上这样做:

function obj(name, lname){
    this.name = name;
    this.lastName = lname;

    get fullName(){
         return this.name + " " + this.lastName;
    }
}

获取“意外标识符”错误...

因为get XX(){}用于var obj = {}; 但是在这里你使用构造函数来创建新对象。 所以你应该使用 。

如果你想在从obj创建的所有对象上应用fullName ,则将其应用于其原型。

 function obj(name, lname){ this.name = name; this.lastName = lname; } Object.defineProperty(obj.prototype, 'fullName', { get : function() { return this.name + " " + this.lastName; } }); var aObj = new obj("first", 'lastN'); console.log(aObj.fullName); 

更新:如果你想要一个更直接的方式,而不是害怕尝试新事物,那么ES2015的类符号可以更容易地做到:

// ES2015 - class
class obj {
  constructor(name, lname) {
    this.name = name;
    this.lname = lname;
  }

  // Define getter method for fullName
  get fullName() {
    return this.name + " " + this.lastName;
  }
}

var aObj = new obj('Billy', 'Hallow');
console.log(aObj.fullName);

目前大多数浏览器都不支持,如果你想在你的网站中使用它,你需要使用像这样的js编译器将它从ES2015转换为ES5。

Babel还为那些对ES2015感兴趣的人提供 ,您可以将上述代码复制到游乐场,看看它是如何工作的。

只需创建一个变量并为其分配函数。

function obj(name, lname){
    this.name = name;
    this.lastName = lname;

    this.fullName = function(){
        return this.name + " " + this.lastName;
    };
}

如果您想了解更多有关它的信息,请尝试阅读有关内容。

此外,这个链接, ,正在解释你需要什么,这是向对象添加一个方法。 而吸气剂传统上只是一种方法。

function obj(name, lname){
    this.name = name;
    this.lastName = lname;
}
obj.prototype.getfullName = function(){
    return this.name + " " + this.lastName;
}

用它作为

a = new obj("My","Name");
a.getfullName() //"My Name"

Javascript使用prototype继承,其功能以function关键字开头。 按照惯例,对象的第一个字符是大写的。

function Obj(name, lname){
    this.name = name;
    this.lastName = lname;
}

Obj.prototype.get = function() {
     return this.name + " " + this.lastName;
}

var person = new Obj('luke', 'lim');
console.log(person.get()); // 'luke lim'
  相关解决方案