应该在JavaScript中使用setter/getter方法

Wot*_*els 1 javascript oop

首先,这可能是基于主要观点的,所以我正在寻找技术原因普遍接受的最佳实践来做一件事或另一件事.

如果我写一个"类"并创建它的成员,我可以像这样访问实例属性

function MyClass(){

  var self = this;

  self.foo = 'bar'

}   

var instance = new MyClass();

instance.foo = '420';
Run Code Online (Sandbox Code Playgroud)

但是,我也可以创建一个设置属性的方法,这样就不需要了解所需类的内部结构

MyClass.prototype.setFoo = function(prop){
  this.foo = prop;
};
Run Code Online (Sandbox Code Playgroud)

考虑到专业发展,是否有理由偏好另一种变体?

Ami*_*ich 5

以下是如何正确使用私有的一个很好的示例 - 使用范围(在您的示例中,我可以在函数外部设置\ access foo,而无需通过set\get函数):

function MyClass(){
    var foo = 'bar'; // private because of "scope"

    this.setfoo  = function(f) {
        foo = f;
    }

    this.getfoo = function() {
        return foo;
    }
}   

var instance = new MyClass();
console.log(instance.foo); // undefined
console.log(instance.getfoo()); // bar
instance.setfoo('a');
console.log(instance.getfoo()); // a
Run Code Online (Sandbox Code Playgroud)

这是一个小提琴