gpt4 book ai didi

javascript - 在 Javascript 中访问私有(private)成员的更好方法

转载 作者:数据小太阳 更新时间:2023-10-29 04:24:14 24 4
gpt4 key购买 nike

在阅读了一些关于 Javascript 的 prototypical inheritance model 之后, 我从

改变了构建类的风格
var Some_Class = function() {
this.public_method = function() {
};
(function() {
// constructor
}).call(this)
}

var Some_Class = function() {
(function() {
// constructor
}).call(this)
}
Some_Class.prototype.public_method = function() {
};

虽然我知道这是一个很好的做法,但我不能再从公共(public)方法访问私有(private)方法

var Some_Class = function() {
var private_member = 'whatever';

(function() {
// constructor
}).call(this)
}
Some_Class.prototype.public_method = function() {
return private_member; // not possible
};

通读一篇文章后here (闭包创建的构造函数),然后我得出了这个

var Some_Class = function() {
var private_member = 'whatever',

private_method = function(_some_value) {
// private method implementation
};

if(!arguments.callee.prototype.public_method) {
arguments.callee.prototype.public_method = function() {
private_method.call(this, private_method);
};
}

(function() {
// constructor
}).call(this)
}

但是,这样做有什么缺点呢?!或者如果我想访问 private member 是否有更好的方法在公共(public)方法中?

最佳答案

我的回答不是答案:JavaScript 中没有内置的private 访问权限,但这没关系,因为YAGNI .以下是我如何在我的代码中创建 private 成员:

function Some_Class() {
this._private_member = 'whatever';
}

Some_Class.prototype._private_method = function() {
};

这就够了。当 private 的唯一真正目的是保护您自己免受...您自己的伤害时,跳圈真的不值得。

(我说这是我自己花了很多时间玩弄闭包和原型(prototype)的每一种排列,就像你一样,最后说“去他的,这不值得”。)

关于javascript - 在 Javascript 中访问私有(private)成员的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1041988/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com