【发布时间】:2014-02-18 13:37:32
【问题描述】:
我正在 node 中编写一个应用程序,但遇到了一些奇怪的事情。
我使用 call() 方法将对象传递给函数以修改该对象。当我在函数内部执行 console.log(this) 时,它会很好地返回对象,但是当我尝试执行 console.log(this.foo) 或尝试修改它说未定义的对象时。 更新:我还必须提到我将这个函数传递给一个对象,因为我必须将这些函数注入另一个函数。 (更具体地说,我正在尝试让this 工作。也许这也是问题的一部分。
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
}
但是,如果我使用“_”设置属性,它们确实存在,但在我调用 console.log(this) 时不会显示;
up: function() {
this._wife = "Jenny"; //doesn't do anything
console.log(this._wife); //returns "Jenny"
console.log(this); //still returns {name: "John", age: 23}
}
我已经尝试过所有方法,例如使用 this.set(key, value)、this.get(key)、this.attributes["name"].value,..
也许我误解了“这个”的工作原理,但经过数小时的搜索和尝试后,我一无所知..
【问题讨论】:
标签: javascript node.js this