Hot For Coding
JavaScript私有变量

如果接触过其它语言的,应该会接触过私有变量这一个概念。所谓私有就是没有受保护,不能修改与访问,只能通过对外接口访问与修改。但是在JavaScript中并没有私有变量这个概念,所有成员都可以通过下标访问与修改,如:

var F = function () {};
 
F.prototype.name = 'zhangsan';
 
var a = new F();
 
console.log(a.name); // zhangsan
 
a.name = 'lisi';

console.log(a.name); // lisi

在JavaScript里,实例的成员变量就这样轻而易举的被修改,有不少人在变量名的加上下划线前缀表示它是私有属性,这是一种普遍约定,但技术层面并没有限制

var F = function () {};
 
F.prototype._name = 'zhangsan';
 
var a = new F();
 
console.log(a._name); // zhangsan
 
a._name = 'lisi';

console.log(a._name); // lisi

如果要从技术手段来确保私有变量的安全性,可以这么设计代码

(function (window) {
     
  // 定义私有变量默认值
  var name = "zhangsan";

  var F = function () {};

  // 访问私有变量
  F.prototype.getName = function () {
    return name;
  };
    
  // 更新私有变量
  F.prototype.setName = function (str) {
    name = str;
  };
    
  window.F = F;
     
})(window);
 
 
var a = new F();

console.log(a.getName());    // zhangsan
 
a.setName('lisi');
 
console.log(a.getName());    // lisi

这种方式也是被使用最多最广泛的方式。

TITLE: JavaScript私有变量

LINK: https://www.qttc.net/372_javascript_private_variable.html

NOTE: 转载内容请注明出处