我是javascript的新手..我正在尝试在JS中创建一个私有函数并在外面访问它..这是我的代码
function Person(name, gender) {
this.name = name;
this.gender = gender;
//the private function
function aFunction(arg1) {
alert("anything");
}
}
var person = new Person("bob", "M");
person._privates['aFunction']();

答案 0 :(得分:1)
我正在尝试在JS中创建一个私有函数并在
之外访问它
首先,这个语句是oxymoron,因为私有函数根据定义是私有的,因此不应该在外部访问。
如果您想要访问其中Person
内定义的方法,那么 - > 会尝试让Person
班级有_privates
会员
function Person(name, gender){
this.name = name;
this.gender = gender;
this._privates = {}; //new property added to access private functions
//the private function
this._privates.aFunction = function (arg1){
alert("anything");
};
}
答案 1 :(得分:1)
首先,如果你想让外面的私人方法可以访问,那么它不再是私有的吗?
但回答你的问题是保留私有方法:aFunction()。
您需要有一个特权方法来访问它才能触发它。
function Person(name, gender) {
this.name = name;
this.gender = gender;
//the private function
function aFunction(arg1) {
alert("anything "+arg1);
}
this.nonPrivateFunction = function(param) {
aFunction(param);
}
}
var person = new Person("bob", "M");
person.nonPrivateFunction("test");
请记住,此特权可以被另一个方法覆盖,但方法代码本身不能更改。
要覆盖这样做,但是您将无法访问私有功能
person.nonPrivateFunction = function() {
console.log("overridden")
}
答案 2 :(得分:0)
你可以试试这个:
function Person(name, gender){
this.name = name;
this.gender = gender;
//the private function
this.aFunction = function(arg1){
alert("anything");
}
}
var person = new Person("bob", "M");
person.aFunction();