gpt4 book ai didi

javascript - JavaScript 中公共(public)字段的可接受性

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:54:08 26 4
gpt4 key购买 nike

我只是想知道公共(public)字段(即那些不在构造函数闭包范围内的字段)在 JavaScript 中是否可以接受。虽然通常的口头禅是“不要使用公共(public)字段,使用访问器或属性”,但我注意到属性尚未在所有浏览器 (IE) 中得到广泛支持。

其他类似于 JavaScript 的“一切都是公共(public)的”的语言,如 Python,似乎并不太关心信息隐藏和公共(public)字段,即使是那些没有用属性装饰的。那么,可以在 JavaScript 中执行此操作吗?

例子

“私有(private)”:

var Class = function()
{
var field = null;
this.getField = function() { return field; };
this.setField = function(value) { field = value; };
};

公开:

var Class = function()
{
this.field = null;
};

最佳答案

我们不关心隐藏公共(public)信息,因为来源是开放的并且由客户即时解释。

通常不使用属性(它们也很慢)并且 getter 函数也不常见。 Javascript 中没有 private 关键字,因此将每个可公开访问的 prop 包装在 getter/setter 方法对中就有点过分了。

只需将属性写入您的对象即可。

这是一种常见的做法,甚至可能是一种约定,在内部属性前加上_ 以表明它们不打算被调用者更改或检查。

例如:

function Foo() { 
this._meta = {}; // internal use only
this.prop2 = {}; // public use ok
}

Foo.prototype.meta = function(key, val) {
if (val !== undefined) {
this._meta[key] = val;
} else {
return this._meta[key];
}
};

此代码显示了一个公共(public)方法 meta 和一个内部属性 _meta。可以访问该属性,但开发人员应该意识到,如果他们修改它,他们可能会破坏状态。

关于javascript - JavaScript 中公共(public)字段的可接受性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5931210/

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