节点.js - 使用变量作为对象名称来调用方法
Node.js - Use variable as object name to call method
我是节点的新手,只是尝试使用 process.argv 在正确的对象上调用方法,但我不断收到错误,它无法读取未定义的属性。
// returns with undefined error
var stops_input = process.argv[3];
this[process.argv[3]].displayStops();
// hard-coding object name works with the method:
N.displayStops();
// displayStops method
this.displayStops = function(){
string = "";
stops.forEach(function(i){
if (i === stops[stops.length -1]) {
string += i;
} else {
string += i + ", ";
}
});
console.log(this.name + " train stops: " + string);
}
感谢您的观看。关于如何使用节点终端控制台中的变量调用对象的任何想法?
尝试使用global
而不是this
...
global[process.argv[3]].displayStops();
这假定N
是传递给节点脚本的第二个参数,并且它存在于全局范围内,并且附加了一个方法displayStops
。
我会执行以下操作。
// Your argument from the commandline (faked for your pleasure)
var method = 'xxx'
// 1. Create a function as normal
function xxx() {
return 'xxx'
}
// 1. Create a reference to it
var callable = {xxx: xxx}
// 1. Call it
callable[method]()
要查看上下文中的内容,请执行以下操作:
console.log(this); // {}
console.log(global.xxx); // undefined
console.log(Object.keys(global)); // Run to see the list
如果你想坚持this
,改变这个:
this[process.argv[3]]().displayStops()
对此:
this[process.argv[3]]()
前者相当于:
this['displayStops']().displayStops()
但你想要后者,这相当于:
this['displayStops']() // The same as calling this.displayStops()
我是节点的新手,只是尝试使用 process.argv 调用 方法在正确的对象上,但我不断收到无法读取的错误 属性未定义。
process.argv 将返回一个参数数组
所以你打电话
node program.js 1 2 3
在终端中
var params = process.argv;
console.log(params);
你会得到
[node, path/to/program.js, someMethod, 2, 3]
假设您传递的第一个参数是一个对象
var firstParam = process.argv[2];
现在,如果您使用方法定义了对象...
var obj = {
someMethod : function() {
console.log("Hello");
}
}
你可以像这样调用此方法
obj["someMethod"]();
obj[firstParam]();
obj.someMethod();
他们都应该产生"你好"
相关文章:
- 从 javascript 中的对象方法返回一个对象
- 在Javascript中调用对象方法时不是函数类型错误
- Java Script将对象方法映射到数组中的对象
- 将数据从promise then方法传递到对象方法
- 设置显示后Flash对象方法不可用:无
- 通过引用Javascript中的另一个函数来传递对象方法
- Javascript库对象方法声明
- JavaScript对象范围-在对象方法中使用对象变量
- jQuery:如何使用文字对象方法中的方法来获取全局变量
- Javascript 对象方法不更新变量
- setInterval 只在对象方法上运行一次
- 对象方法中函数中的上下文
- 用JavaScript编写对象方法的最佳方式是什么
- 使用回调处理程序调用函数内部的父对象方法
- 从Javascript中的对象方法中访问全局变量
- 将此(对象)传递到一个对象方法嵌套方法中
- 为什么我得到“;不是函数错误”;对于我的对象方法
- 带有回调的Javascript对象方法中的递归
- 更正Node.js异步管道中的对象方法调用
- 如何在对象方法上调用requestAnimFrame