Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript this.property返回nodejs中未定义的_Javascript_Node.js_This - Fatal编程技术网

Javascript this.property返回nodejs中未定义的

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

我正在node中编写一个应用程序,我遇到了一些奇怪的事情

我使用call()方法将一个对象传递到函数中,以修改该对象。当我在函数中执行console.log(this)时,它返回的对象很好,但是当我尝试执行console.log(this.foo)或尝试修改对象时,它表示未定义更新:我还必须提到,我在一个对象中传递了这个函数,因为我必须将函数注入到另一个函数中。(更具体地说,我正在努力工作。也许这也是问题的一部分

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));