我编写了以下代码来理解 JavaScript 中的类实现和闭包。
1
function Person(name) {
this.Name = name;
console.log("Person Fired!!");
(function EchoMyName(temp) {
console.log("EchoMyName - " + temp);
}("Self Called"));
EchoMyName("Called by Person!");
}
Person.prototype.CallMe = function(){
console.log("Call Me Fired!");
EchoMyName("Called by CallMe!");
}
在这里,当我实例化时Person
,我得到以下输出-
Person Fired!!
EchoMyName - Self Called
ReferenceError: EchoMyName is not defined
但它就在那里,我在调用它之前定义了它?为什么会出错?
2
此外,当我修改代码以删除以前的错误并调用CallMe
一个人时,它似乎无权访问 EchoMyName
function Person(name) {
this.Name = name;
console.log("Person Fired!!");
function EchoMyName(temp) {
console.log("EchoMyName - " + temp);
};
}
Person.prototype.CallMe = function(){
console.log("Call Me Fired!");
EchoMyName("Called by CallMe!");
}
称呼:
new Person().CallMe();
输出
Person Fired!!
Call Me Fired!
ReferenceError: EchoMyName is not defined
更新#1
感谢所有的答案。我在 Douglas Crockford 的网站上找到了这个链接:http: //javascript.crockford.com/private.html
它提供了对隐藏在 JavaScript 中的信息的非常清晰的理解。