我是一名尝试Javascript的Java开发人员。我知道两者之间存在差异。我们可以使用对象,原型或类(ES6)将数据绑定在一起。但是我们如何在Java中实现Javascript中的私有类成员呢?
例如,我有一个Cat类定义如下:
function Cat() {
this.name = "kitty";
this.colour = "white";
}
var kitty = new Cat();
我不希望可以从Cat声明之外访问类的名称和颜色属性。
有没有办法在Javascript中实现这一点?
答案 0 :(得分:1)
我不太相信我要引用蜘蛛侠但是......
强大的力量带来了巨大的责任
JavaScript功能强大且灵活,为程序员提供了很多自由。它没有旨在阻止程序员编写错误代码的功能。当你编写JavaScript时,你有责任确保代码是好的,而不是语言。
使用闭包可以实现私有变量/属性。
闭包是指独立(自由)变量的函数 (在本地使用但在封闭范围内定义的变量)。 换句话说,这些功能“记住”其中的环境 他们被创造了。
var add = (function () {
var counter = 0; /// here is your private property/variable
return function () {return counter += 1;}
})();
add();
add();
add();
// the counter is now 3
要了解有关闭包的更多信息,请转到clousers
谢谢! 保持饥饿,流浪愚蠢:)
答案 1 :(得分:1)
是的私人会员可以在javascript中使用。虽然javascript不支持公共,私有属性。
有各种方法可以实现它,例如:闭包(已经在上面的例子中解释过)和各种设计模式。
其中一个是Modular Reveal Pattern,它就像:
function Cat(){
// PRIVATE MEMBERS
var name = 'kitty';
var color = 'white';
var eats = function(){ return true };
// PUBLIC MEMBERS (REVEALED MEMBERS)
return {
'catName':name,
'catEats':eats
}
}
var catInstance = new Cat();
console.log(catInstance.catName); //kitty (public)
console.log(catInstance.color); //undefined (private)