在对象函数

时间:2015-07-16 08:40:16

标签: javascript oop setter getter

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

正如我在MDN参考文献(http://mzl.la/1CIUuIw)中看到的那样,它可以在对象文字中轻松完成:

myObj.fullName

但是,我无法在对象函数上执行此操作:

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

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

4 个答案:

答案 0 :(得分:9)

由于I3用于I3但是在这里你使用构造函数来创建新对象。所以你应该使用MDN - Object.defineProperty()

如果您希望IX适用于I3创建的所有对象,请将其应用于原型。



get XX(){}




更新: 如果你想要一个更直接的方式,而不是害怕尝试新事物,那么var obj = {};的课程表示法可以更容易地做到:

fullName

目前大多数浏览器都不支持,如果您想在您的网站中使用此功能,则需要使用Babel之类的js编译器将其从ES2015转换为ES5。

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

答案 1 :(得分:0)

只需创建一个变量并将其赋值给它。

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

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

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

此外,此链接Javascript methods正在完全解释您需要的内容,即向对象添加方法。而吸气剂传统上只是一种方法。

答案 2 :(得分:0)

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"

答案 3 :(得分:0)

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'