使用JavaScript私有方法:
以下是Douglas Crockford关于JavaScript变量和函数可见性的教程: 我已经编写了以下MyClass.js文件,并且正在使用节点从终端运行它。下面我展示了终端上的输出和我的类。我不明白为什么返回“undefined”(而不仅仅是true),以及为什么我的console.log(log)没有显示在任何地方使用JavaScript私有方法:,javascript,node.js,private,privacy,Javascript,Node.js,Private,Privacy,以下是Douglas Crockford关于JavaScript变量和函数可见性的教程: 我已经编写了以下MyClass.js文件,并且正在使用节点从终端运行它。下面我展示了终端上的输出和我的类。我不明白为什么返回“undefined”(而不仅仅是true),以及为什么我的console.log(log)没有显示在任何地方 $ node MyClass.js undefined true 我的班级呢 function MyClass(log) { this.log = log;
$ node MyClass.js
undefined
true
我的班级呢
function MyClass(log)
{
this.log = log;
var that = this;
function _evaluate (log)
{
console.log(log);
return true;
};
this.evaluate = function()
{
return _evaluate() ? true : false;
};
}
var myObject = new MyClass('this is a test');
console.log(myObject.evaluate());
调用
\u evaluate
时不带任何参数,因此它只打印一次未定义的
(第7行),然后打印true
(第19行)
最后,它打印
未定义的
,因为脚本作为一个整体没有返回值。您得到未定义的
,因为您没有将参数传递给\u evaluate
,因此log
在函数中是未定义的
。不确定预期结果是什么。。。只需删除参数?为什么要为\u evaluate
函数设置参数?因为它与构造函数的参数同名(log
),所以它被隐藏了…而且因为您调用了\u evaluate()
(无参数),所以它有一个未定义的值。尝试执行console.log(that.log)代码>(不带\u evaluate
功能的日志参数)