【发布时间】:2016-01-29 18:01:26
【问题描述】:
我有一个命名空间 MyNameSpace,它有一个公共变量 Name 和公共方法 SayName 和 ChangeName
var MyNameSpace = MyNameSpace|| function () {
var _name = "John";
function _SayMyName() {
return _name;
}
function _changeMyName(newName) {
_name = newName;
}
return {
SayName: _SayMyName,
ChangeName : _changeMyName,
Name:_name
}
}();
alert(MyNameSpace.SayName()) // John
MyNameSpace.ChangeName("Paul")
alert(MyNameSpace.SayName()) // Paul
alert(MyNameSpace.Name) // John
MyNameSpace.Name 将始终返回 John,即使 _Name 已更改。为什么? MyNameSpace.Name 不包含对 _Name 的引用?
怎么做 MyNameSpace.Name 返回与 _Name 相同的值?
【问题讨论】:
-
您在对象中返回了
_name的副本,而不是对该属性的引用。 -
正如您自己所说,它们是两个不同的变量(或者实际上,一个是属性而不是变量)。
标签: javascript oop namespaces