Javascript命名约定:value()vs getValue()

时间:2014-07-16 18:40:35

标签: javascript naming-conventions

想象一个简单的对象:

function createObj(someValue) {
    return {
        someFunction: function () {
            return someValue;
        }
    };
};

它基本上是这样的:

var obj = createObj("something");
var result = obj.someFunction(); // "something"

现在,someFunction指的是一个返回值的函数。 javascript中someFunction函数使用的正确命名约定应该是什么? 它应该被命名为它的作用吗?或者可以用它返回的对象的名称命名它?

我的意思是,我应该将其命名为value(),还是应该将其命名为getValue()?为什么呢?

提前致谢。

4 个答案:

答案 0 :(得分:3)

JavaScript中没有“正确”的命名。但是,主要使用三种约定:

独立的getter和setter:

在这种方法中,我们创建了一个getter和setter函数,就像在Java中一样:

var value;

this.getValue = function () {
    return value;
}

this.setValue(val) {
    value = val;
}

组合getter / setter方法

在这种方法中,您只有一种方法可以同时执行这两种操作。这里的神奇之处在于它会检查您是否为您的财产提供了新值:

var _value;

this.value = function (val) {
    if (arguments.length > 0) {
        // Acts like a setter
        _value = value;
        return this;
    }
    return _value;
}

定义你的setter以返回你的类的实际实例也很常见,所以你可以这样做:

myObj
     .setProp1("foo")
     .setProp2("bar");

Object.defineProperty

这个使用较少,但它也是一种选择。它类似于Objective-C @property语句:

var _value;
Object.defineProperty(this, "value", {
    get: function() {
        return _value;
    },
    set: function(val) { 
        _value = val;
    }
});

然后你可以像访问公共财产一样访问它:

console.log(myObj.value);  // Calls the getter method
myObj.value = newValue;    // Calls the setter method

答案 1 :(得分:1)

一般命名约定说getValue()将是函数的名称,其中value将是变量的名称。

因此,如果您直接访问数据,则使用obj.value,而如果您使用函数获取某些数据,则可以使用obj.getValue()

答案 2 :(得分:1)

特别是Javascript有很多命名约定。

这个问题有一个姐姐,希望这对您的问题有所帮助:Clicky for more info

答案 3 :(得分:1)

我个人是getValue和setValue的粉丝,但在阅读其他人的代码库时,我看到了

object.value = function(item){
  if (!item) return this.value;
  this.value = item;
}

jQuery在常规中使用它,这就是为什么我不想一直打击它。

相关问题