相关疑难解决方法(0)

"this"关键字如何运作?

我注意到,似乎没有明确解释this关键字是什么以及如何在Stack Overflow站点上的JavaScript中正确(和错误地)使用它.

我亲眼目睹了一些非常奇怪的行为,并且无法理解为什么会发生这种行为.

this工作如何以及何时使用?

javascript this

1243
推荐指数
16
解决办法
39万
查看次数

NodeJS中的"全局"对象是什么

我刚刚this在NodeJS环境中看到了关键字的奇怪行为.我用代码列出它们.我NodeJS v6.x用一个JavaScript文件运行这些代码.

在使用以下一行代码进行测试时,无论是否使用该'use strict'语句,都指向一个空对象{}.

console.log(this)
Run Code Online (Sandbox Code Playgroud)

但是,当我在自执行函数中运行语句时,

(function(){
  console.log(this);
}());
Run Code Online (Sandbox Code Playgroud)

它正在打印一个非常大的对象.在我看来环境创建的全局执行上下文对象NodeJS.

在使用'use strict'语句执行上述功能时,预计会打印undefined

(function(){
  'use strict';

  console.log(this);
}());
Run Code Online (Sandbox Code Playgroud)

但是,在使用浏览器(我只测试过Chrome)时,前三个示例产生window对象,最后一个示例undefined按预期方式给出.

浏览器的行为是可以理解的.但是,如果是NodeJS,它不会创建执行上下文,直到我在函数内部包装?

那么,大多数代码NodeJS运行时都是空的全局 object

javascript scope global this node.js

43
推荐指数
5
解决办法
2万
查看次数

Node.js变量声明和范围

当我在node.js中键入它时,我得到了undefined.

var testContext = 15;
function testFunction() {
  console.log(this.testContext);
}
testFunction();
=>undefined
Run Code Online (Sandbox Code Playgroud)

没有var关键字,它传递(=> 15).它在Chrome控制台中运行(有和没有var关键字).

javascript scope node.js

37
推荐指数
3
解决办法
7万
查看次数

Javascript:服务器端动态变量名称

如何在NodeJS中创建动态变量名?一些例子说要存储在window变量中,但我假设这是客户端Javascript.如我错了请纠正我.

javascript node.js dynamic-variables

11
推荐指数
2
解决办法
1万
查看次数

使用"var that = this"了解Javascript范围

假设我在对象中有以下属性方法:

  onReady: function FlashUpload_onReady()
  {
     Alfresco.util.Ajax.jsonGet({
       url: Alfresco.constants.PROXY_URI + "org/app/classification",
       successCallback: {
         fn: function (o) {
           var classButtonMenu = [],
               menuLabel, that = this;

           var selectButtonClick = function (p_sType, p_aArgs, p_oItem) {
               var sText = p_oItem.cfg.getProperty("text");
               that.classificationSelectButton.set("label", sText);
           };

           for (var i in o.json.items) {
             classButtonMenu.push({
               text: o.json.items[i].classification,
               value: o.json.items[i].filename,
               onClick: {fn: selectButtonClick}
             });
           }

           this.classificationSelectButton = new YAHOO.widget.Button({
             id: this.id + "-appClassification",
             type: "menu",
             label: classButtonMenu[0].text,
             name: "appClassification",
             menu: classButtonMenu,
             container: this.id + "-appClassificationSection-div"
           });
         },
         scope: this
       }, …
Run Code Online (Sandbox Code Playgroud)

javascript

9
推荐指数
2
解决办法
9277
查看次数

为什么在文件中和函数内声明的'this'指向Node.js中的不同对象

我有一个这样的脚本:

var test = function(){
    console.log('From test: '  + this);
};
console.log(this);
test();
Run Code Online (Sandbox Code Playgroud)

我运行的是哪个node test.js.而我对脚本的期望是this指向全局对象,但只有this测试函数指向global对象. console.log(this);实际上指向一个空对象.

我试图理解为什么node.js有这种行为,我误解了this关键字如何在node.js中工作.

javascript this node.js

9
推荐指数
0
解决办法
104
查看次数

为什么在web和nodejs上运行JavaScript会有不同的输出?

我已经更新了我Node.Js进入version 7.6.0和运行谷歌浏览器version 57.0的另一方面.

当我运行这段javascript代码时,我得到两个不同的结果,如下所示:

    'use strict'
    
    var obj = {
        id: "awesome",
        cool: function coolFn() {
            console.log(this.id);
        }
    };
    var id = "not awesome";
    obj.cool(); //awsome
    
    setTimeout(obj.cool, 100);
Run Code Online (Sandbox Code Playgroud)

铬的结果:

awesome
not awesome
Run Code Online (Sandbox Code Playgroud)

node.js上的结果:

awesome
undefined
Run Code Online (Sandbox Code Playgroud)

记录到https://nodejs.org/en/docs/es6/我甚至使用了--harmony标志,但node.js的结果没有改变.

javascript node.js ecmascript-6

6
推荐指数
1
解决办法
92
查看次数

Nodejs 模块中的“this”是什么意思?

我有一个如下所示的简单代码并将其作为节点模块执行:

\n\n
console.log(this);\nmodule.exports = {\xe2\x80\xa6};\n
Run Code Online (Sandbox Code Playgroud)\n\n

我知道这global是默认上下文(就像window在浏览器中一样),但是this关键字指的是什么呢?

\n

javascript global this node.js

2
推荐指数
1
解决办法
510
查看次数