lan*_*nte 2 javascript naming-conventions
想象一个简单的对象:
function createObj(someValue) {
return {
someFunction: function () {
return someValue;
}
};
};
Run Code Online (Sandbox Code Playgroud)
它基本上是:
var obj = createObj("something");
var result = obj.someFunction(); // "something"
Run Code Online (Sandbox Code Playgroud)
现在,someFunction指的是返回值的函数。javascript 中someFunction函数的正确命名约定应该是什么?它应该按照它的作用命名吗?或者可以用它返回的对象的名称来命名它?
我的意思是,我应该命名它value(),还是我应该命名它getValue()?为什么?
提前致谢。
JavaScript 中没有“正确”的命名。然而,最常用的是三种约定:
在这种方法中,我们创建了 getter 和 setter 函数,就像 Java 中一样:
var value;
this.getValue = function () {
return value;
}
this.setValue(val) {
value = val;
}
Run Code Online (Sandbox Code Playgroud)
在这种方法中,您可以使用一个方法来完成这两个任务。这里的神奇之处在于它会检查您是否为您的属性提供了新值:
var _value;
this.value = function (val) {
if (arguments.length > 0) {
// Acts like a setter
_value = value;
return this;
}
return _value;
}
Run Code Online (Sandbox Code Playgroud)
定义 setter 以返回类的实际实例也很常见,因此您可以这样做:
myObj
.setProp1("foo")
.setProp2("bar");
Run Code Online (Sandbox Code Playgroud)
这个用得比较少,但也是一种选择。它类似于 Objective-C 的@property声明:
var _value;
Object.defineProperty(this, "value", {
get: function() {
return _value;
},
set: function(val) {
_value = val;
}
});
Run Code Online (Sandbox Code Playgroud)
然后你可以像访问公共财产一样访问它:
console.log(myObj.value); // Calls the getter method
myObj.value = newValue; // Calls the setter method
Run Code Online (Sandbox Code Playgroud)