Getters and setters in javascript
Getters and setters in javascript
我从javascript开始,特别是OOP模式。
我的问题很简单。在 setter 中,有没有办法为参数和私有类变量保留相同的名称?我到处找过,但找不到有人提到它,只是具有不同var名称的示例。我对我的代码非常挑剔,我不得不给它起两个不同的名字。
以 http://ejohn.org/blog/javascript-getters-and-setters/为例
function Field(val){
this.value = val;
}
Field.prototype = {
get value(){
return this._value;
},
set value(val){
this._value = val;
}
};
您可以在 setter 中看到参数是 val,但属性实际上是值。因为它是javascript,我不能简单地这样做.value=value,因为"this"会让它公开。value=value 将同时引用参数(并且会非常奇怪)。真的没有办法吗?如果没有,是否有针对这种情况的"最佳实践"?我想下划线可能是有效的,但我只是挑剔,所以只是想确保没有其他方法。
谢谢!
您可以使用闭
包来隐藏变量。
function MyClass {
var value;
this.getValue = function() {
return value;
}
this.setValue = function(val) {
value = val;
}
}
构造函数MyClass
完成后,value
字段将不可用,因为它的作用域仅限定为此构造函数(函数)。因此,我们可以说value
是一个私人领域。但是,方法getValue()
和setValue()
可以从构造的对象公开访问,并且它们保留对MyClass
变量范围的引用,因此它们仍然可以操作value
。
使用闭包:
(function(exports){
exports.field = {};
var _value = '123';
exports.field.get = function(){
return _value;
}
exports.field.set = function(val){
_value = val;
}
})(window);
console.log(field.get());
这里有一个关于 JS 闭包的好教程。
相关文章:
- onclick javascript in PHP
- javascript in jquery popup
- Javascript in Visual studio Web Api
- JavaScript in WebView - Android Studio
- JavaScript in Netbeans
- openDatabaseSync in Javascript in QT-Quick
- Javascript in partial (Ruby on Rails)
- javascript in onkeypress value
- 如何从 javascript in html 访问 Java 中的方法
- javascript in onXXX handler escaping of & in parameter
- Bootstrap3 remote modal with javascript in remote?
- Javascript in foreach Magento
- Indy TIdHTTPServer OnCommandGet javascript in html not execu
- Html and javascript in visual studio 2013
- JavaScript in AJAX Response
- JavaScript in SQL
- popover javascript in foreach php
- Javascript in Asp.net,C#
- JavaScript in HTML head, innerhtml 不起作用
- Load HTML with javaScript in <a href...> link