gpt4 book ai didi

javascript - 私有(private)方法和字段

转载 作者:搜寻专家 更新时间:2023-11-01 04:19:33 26 4
gpt4 key购买 nike

我正在评估 selfish想知道如何声明私有(private)方法/字段?

最佳答案

执行私有(private)函数的常用方法是使用各种“方法”关闭的函数,例如拿起他们的 Dog 例子,改变这个:

// The basic Dog example
var Dog = Base.extend({
bark: function() {
return 'Ruff! Ruff!'
}
});

// Adding a private function
var Dog = Base.extend((function(){
function trulyPrivate() {
console.log(this.bark());
}

return {
bark: function() {
return 'Ruff! Ruff!'
},
logBark: function() {
trulyPrivate.call(this);
}
};
})());

用法:

new Dog().logBark();  // logs "Ruff! Ruff!" using the truly private function behind the scenes

对于私有(private)字段,通常的方法是在构造函数中构建任何需要真正私有(private)字段的东西,以便它们在构造函数调用中关闭(私有(private))变量,a'la Crockford's pattern :

function Foo(arg) {
var trulyPrivateData = arg;

this.logIt = function() {
console.log(trulyPrivateData);
};
}

用法:

var f = new Foo(42);
f.logIt(); // logs 42 even though there's no way, externally, to get that value from `f`

...selfish 取消了实际的构造函数,但是 initialize 函数应该有相同的目的:

var Dog = Base.extend({
initialize: function(arg) {
var woof = arg || 'Ruff! Ruff!';
this.bark = function() {
return woof;
};
}
});

现在,您无法设置woof(构造时除外,因为我们是故意这样做的),您只能从bark 中检索它。例如,它是真正私有(private)的(除了我们明确允许 bark 返回它之外)。

如果你深入了解它的技术细节,我博客中的这些文章可能(或可能没有)有用,因为当你进入私有(private)函数等时,你通常必须开始管理this:

如果你想评估另一件事,这里是我的 Lineage project ,这同样是纯原型(prototype)继承,但可以轻松访问父对象属性、函数等,并且语法积极鼓励对此类事物使用私有(private)范围。

关于javascript - 私有(private)方法和字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9908971/

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