javascript对象';s-private方法:哪种方法更好
//定义javascript对象私有方法的两种方法中,哪一种更好,特别是在内存管理和性能方面。您的“私有函数1”根本不是私有的。而版本#2已关闭,因此实际上只能通过javascript对象';s-private方法:哪种方法更好,javascript,jquery,performance,Javascript,Jquery,Performance,//定义javascript对象私有方法的两种方法中,哪一种更好,特别是在内存管理和性能方面。您的“私有函数1”根本不是私有的。而版本#2已关闭,因此实际上只能通过用户对象访问 通常没有“更好的”,但在这种情况下,封闭函数完全隐藏在外部世界之外(这显然更好) 仍然有谣言说关闭会导致内存泄漏,这是错误的。闭包不会造成内存泄漏,但程序员会/可以。你的例子很好 要使用私有方法,应该使用几乎完全相同的模式 (function () { function User() { //so
用户
对象访问
通常没有“更好的”,但在这种情况下,封闭函数完全隐藏在外部世界之外(这显然更好)
仍然有谣言说关闭会导致内存泄漏,这是错误的。闭包不会造成内存泄漏,但程序员会/可以。你的例子很好
要使用私有方法,应该使用几乎完全相同的模式
(function () {
function User() {
//some properties
}
//private fn 1
User.prototype._aPrivateFn = function () {
//private function defined just like a public function,
//for convetion underscore character is added
}
//private function type 2
//a closure
function _anotherPrivateFunction() {
// do something
}
//public function
User.prototype.APublicFunction = function () {
//call private fn1
this._aPrivateFn();
//call private fn2
_anotherPrivateFunction();
}
window.UserX = User;
})();
jQuery的johnresig对如何创建独家新闻/原型制作/继承等做了出色的介绍
如果您必须(或想要)对外界隐藏函数,那么创建闭包会更好 如果您关心以下方面,则向原型添加方法会更好:
很可能依赖于浏览器。令人遗憾的是,使用第二种方法需要在范围链中多走一步,因此(可能不明显)速度较慢。但你有更多的控制权。我同意1不是私人的。但我只想知道,在原型中添加方法或创建闭包时,哪种方法更好。
var myObject = function() {
// privates
var a = 5,
b = 10,
c = a,
public = {};
public.getA = function() {
return a;
};
public.setA = function(v) {
a = v;
};
function privateOne() {
}
return public;
};