Javascript this.property返回nodejs中未定义的
我正在node中编写一个应用程序,我遇到了一些奇怪的事情 我使用call()方法将一个对象传递到函数中,以修改该对象。当我在函数中执行console.log(this)时,它返回的对象很好,但是当我尝试执行console.log(this.foo)或尝试修改对象时,它表示未定义更新:我还必须提到,我在一个对象中传递了这个函数,因为我必须将函数注入到另一个函数中。(更具体地说,我正在努力工作。也许这也是问题的一部分Javascript this.property返回nodejs中未定义的,javascript,node.js,this,Javascript,Node.js,This,我正在node中编写一个应用程序,我遇到了一些奇怪的事情 我使用call()方法将一个对象传递到函数中,以修改该对象。当我在函数中执行console.log(this)时,它返回的对象很好,但是当我尝试执行console.log(this.foo)或尝试修改对象时,它表示未定义更新:我还必须提到,我在一个对象中传递了这个函数,因为我必须将函数注入到另一个函数中。(更具体地说,我正在努力工作。也许这也是问题的一部分 var obj = {name: "John", age: 23}; var fu
var obj = {name: "John", age: 23};
var functions = {up: function() { /* do stuff */ }, down: function() { /* do stuff */
functions.up.call(obj);
up: function() {
console.log(this); //returns {name: "John", age: 23}
console.log(this.name); //returns undefined
this.wife = "Jenny"; //doesn't do anything
}
但是,如果我使用“\u1”设置属性,它们确实存在,但在调用console.log时不会显示(这是)
我已经尝试过使用这个.set(key,value),this.get(key),this.attributes[“name”]。value
也许我误解了“this”的工作原理,但经过数小时的搜索和尝试,我还是一窍不通。在控制台中尝试您的代码时,我将语法修改为函数表达式,它对我有效,也许这是您的问题
var obj = {name: "John", age: 23};
up.call(obj);
function up() {
console.log(this); //returns {name: "John", age: 23}
console.log(this.name); //returns "John"
this.wife = "Jenny"; // works
console.log(this);
}
我正在从chrome/win7¬epad++插件中的这个节点获得工作输出:
var obj = { name: "John", age: 23 };
var functions = {
up: function() {
console.log(this); //returns {name: "John", age: 23}
console.log(this.name); //returns undefined
this.wife = "Jenny"; }, //doesn't do anything
down: function(){ } }
functions.up.call(obj);
console.log('obj:',obj);
输出:
{姓名:“约翰”,年龄:23}约翰
对象:{姓名:“约翰”,年龄:23岁,妻子:“珍妮”} 您对“此”的理解似乎是正确的
你可以试着换一个
functions.up.call(obj);
与
我也遇到了同样的问题。最后我找到了解决方案——我将有问题的代码放在圆括号中:
var i = node.declarations.length; //Error: cannot get length of undefined
var i = (node.declarations).length; // 11
我想你应该这样做:
console.log((this.name).toString());
或
感谢你的回答Ronny,但是我不能这样做,因为我必须通过一个对象传递函数(也许应该提到)。我已经更新了我的问题。它可能与node.exe的版本有关吗?我有文件版本:0.10.25.0,产品版本:0.10.25我运行的是同一个节点版本,所以这不是问题。另外,您的代码本身也可以正常工作,但是当与我上面提到的npm模块一起使用时,它也有同样的问题,因此它一定是有问题的h模块,但我找不到任何问题…仍然不清楚。
var i = node.declarations.length; //Error: cannot get length of undefined
var i = (node.declarations).length; // 11
console.log((this.name).toString());
console.log((this.name));