在 JavaScript 创建私有函数和变量

很多人都非常反感 JavaScript 编程,由于某些原因,他们不能容忍缺乏安全和结构的编程语言,其中的一个缺点是结构内的变量的名称缺乏私有,他们坚信有一点,如果你创建一个属性对象,或者创建三维的全局变量,这是任何人都公平的游戏。然而一些非常简单的模式,你可以使用 JavaScript 来保护在访问一个给定的对象或变量的私有。

在 JavaScript 创建私有函数和变量

Classes

你可能知道在 JavaScript 中是不存在真实的类的,但使用功能和原型,我们可以模拟非常好。使用这种模式,你也可以模拟私有变量:

function MyClass(parameter) {

// Create the private var

var privateVar = 8,

self = this;

self.parameter = parameter

// Function that handles the private

function handlePrivate() {

return privateVar ? privateVar-- : false;

}

// Public method that calls the handler

// Returns parameter until it's been accessed 8 times

this.getPrivate() {

return handlePrivate() ? self.parameter : null;

}

}

私有的创建通过构建函数,而且也只能通过构建函数创建,添加了特别的访问方法来访问私有属性,在以上示例中,值只有通过特定的方法访问。

Closures

模式围绕一个变量范围关闭,返回一个对象或函数来访问变量。这是一个简单的例子:

var accessor = (function() {

// Create the private var

var privateVar = "You Can't See Me, ";

// Some other functionality here that periodically changes privateVar, because it has access to it

// [ more code here ]

// Return the accessor

return function(name) {

return privateVar + name;

};

})();

// Use!

// currentValue = accessor("David"); "You Can't See Me, David"

privatevar 变量不可用外关闭,所以没有办法直接访问的。我们这样做,然而,能够变回从闭合有一个定义函数。因此,变量保持私密,你可以访问它的值,但不允许直接访问。你也可以返回修改受保护对象变量的方法:

var accessor = (function() {

// The "private"

var val = 9;

// An object for getting and setting

return {

get: function() {

return val * 3;

},

set: function(s) {

val = s;

}

};

})();

当然以上的模式,用户可以重新获得类似的方法:

accessor = function(n) { return "My custom string, " + n; }

通常所有的功能处理私人信息处于封闭,防止用户重写方法的问题。像这样的东西:

var accessor = (function() {

var permissions = {};

function handleResult(perm) {

// Do something with the result

}

return function(permissionToCheck, callback) {

if(permissions[permissionToCheck]) != undefined) {

callback(permissions[permissionToCheck]);

}

else {

$.post({

url: "/permissions"

data: {

perm: permissionToCheck

}

}).success(function(res) {

callback(handleResult(res));

});

}

};

})();

在 JavaScript 简单一定美,不把它写下来,因为它不提供相同的显式结构为其他语言。

以上是 在 JavaScript 创建私有函数和变量 的全部内容, 来源链接: utcz.com/p/232143.html

回到顶部