Tag: 这个

从async.series调用的原型函数中使用“this”

我想通过使用“this”来访问一个variables,但是由于我的函数被async.series调用, async.series上下文发生了变化。 这是我的代码示例:) var search = function(url) { this.music = url; } search.prototype.test = function() { async.series({ songId: this.getSongId }, function(err, results) {}); }; search.prototype.getSongId = function(callback) { console.log(this.music) // Prints 'undefined' } module.exports = search; 当我在做 var engine = require('./lib/index.js'); var search = new engine('test'); search.test(); 我得到“未定义”。 有没有办法将“这个”绑定到async.series函数,或者我应该只是将我的值作为parameter passing?

在express.js中实例化的控制器中的“this”的意外值

“this”似乎并不涉及实例化的预算控制器对象。 相反,它似乎是指全局对象。 有人知道为什么吗? 我已经定义了一个预算模型。 注入控制器,我试图简单地生成一个随机的6个string,当我在我的应用程序中打/预算。 相反,这个.DEFAULT_SLUG_LENGTH是不确定的,我不明白为什么。 这是一个愚蠢的testing案例,说明这个问题。 在引用另一个函数中的this.budget来根据slug值查询数据库时,我遇到了类似的问题。 //models/budget.js var Schema = require('jugglingdb').Schema; var schema = new Schema('postgres',{url:process.env.DATABASE_URL}); var Budget = schema.define('budgets',{ total: Number, slug: String }); module.exports = Budget; ==================== //controllers/budget.js function BudgetController (budget) { this.budget = budget; }; BudgetController.prototype.DEFAULT_SLUG_LENGTH = 6; BudgetController.prototype.generateSlug = function (req,res) { var slug = ""; var possible = […]

为什么节点全局上下文===“this”有时仅在样本中?

我有以下test.js文件发出两行输出,每行testing严格相等的全局对象和this 。 var c = require("console"); console.log(this === global); (function () { console.log(this === global); })(); 当我从命令行使用node.exe test.js运行此文件时,我得到以下输出: 假 真正 但是,当我从节点REPL中加载test.js时,它提供了不同的输出: 真正 真正 这是在REPL中加载脚本的完整脚本 PS C:\Programming> node > .load test.js .load test.js > var c = require("console"); undefined > console.log(this === global); true undefined > > (function () { … console.log(this === global); … })(); […]

在节点RED中理解这个._(STRING)调用

我想了解node-red中的Switch节点的现有代码来正确处理和创build自己的节点。 我被这些线卡住了: var operators = [ {v:"eq",t:"=="}, {v:"neq",t:"!="}, {v:"lt",t:"<"}, {v:"lte",t:"<="}, {v:"gt",t:">"}, {v:"gte",t:">="}, {v:"btwn",t:this._("switch.rules.btwn")}, {v:"cont",t:this._("switch.rules.cont")}, {v:"regex",t:this._("switch.rules.regex")}, {v:"true",t:this._("switch.rules.true")}, {v:"false",t:this._("switch.rules.false")}, {v:"null",t:this._("switch.rules.null")}, {v:"nnull",t:this._("switch.rules.nnull")}, {v:"else",t:this._("switch.rules.else")} ]; 特别是与this._("switch.rules.smthg") 。 它将如何工作? 有时在代码中,我会看到这个调用,但是我无法find它存储的位置,所以请自己创build,就像this._(myawesomenode.myawesomesection.myawesomepropertie) 编辑 感谢您的意见,我已经看到这是国际化。 提供我有这个目录: { "and": { "list": { "key": "THE DATA I WANT" } } } 我如何获得我的数据? 我试过this._(and.list.key)没有结果。

YDKJS – 这个怎么样?

我从YDKJS复制了代码,作者期望输出是'oops global',但是当我在Node中运行这个时,我得到'undefined'。 为什么? function foo() { console.log(this.a); } var obj = { a: 2, foo: foo }; var bar = obj.foo; // function reference/alias! var a = "oops, global"; // `a` also property on global object bar(); // "oops, global"

节点js窗口对象

在浏览器上,全局对象是window object ,在nodejs ,全局对象是global object 。 当我运行这个代码在terminal上使用nodejs我有这个输出 console.log(this === global) ===>这个返回false 然后使用nodejs的交互模式 >this === global true 但在浏览器上, console.log和this === window返回true 有什么不同?

这个在全球范围内和内部的function

根据MDN的这个解释 : 在全球范围内, this是指全球性的客体 在函数上下文中,如果函数被直接调用,则它再次引用全局对象 但是,以下是: var globalThis = this; function a() { console.log(typeof this); console.log(typeof globalThis); console.log('is this the global object? '+(globalThis===this)); } a(); …放在文件foo.js产生: $ nodejs foo.js object object is this the global object? false

关于这个/ @在Javascript / Coffeescript中的一个难题

我正在通过Trevor Burnham的CoffeeScript书,我遇到了一个关于this / @的奇怪的难题。 这个难题有几个部分(我可能只是很困惑),所以我会尽力使这个尽可能清楚。 我遇到的主要问题是,通过不同的REPL和解释器,运行相同的代码会得到各种不一致的结果。 我正在testing(1) coffee REPL和解释器,(2)Node的REPL和解释器,以及(3)V8的REPL和解释器。 这里是代码,首先是Coffeescript,然后是Javascript: // coffeescript setName = (name) -> @name = name setName 'Lulu' console.log name console.log @name // Javascript via the coffee compiler (function() { var setName; setName = function(name) { return this.name = name; }; setName('Lulu'); // console.log for node below – print for v8 // […]

什么是NodeJS中的“全局”对象

我刚刚在NodeJS环境中看到了this关键字的奇怪行为。 我用代码列出他们。 我已经用NodeJS v6.x和一个JavaScript文件运行这个代码。 在使用一行代码进行testing时,无论是否使用'use strict'语句,都会指向一个空对象{} 。 console.log(this) 但是,当我在一个自我执行的函数内运行这个语句时, (function(){ console.log(this); }()); 这是打印一个真正的大对象。 在我看来, NodeJS环境创build的全局执行上下文对象。 在'use strict'语句执行上述function的同时,预计打印undefined (function(){ 'use strict'; console.log(this); }()); 但是,在使用浏览器(我只使用Chrome进行testing)的同时,前三个例子产生window对象,最后一个undefined按预期undefined 。 浏览器的行为是可以理解的。 但是,在NodeJS情况下,它不会创build执行上下文,直到我包装在一个函数内? 那么, NodeJS大部分代码都运行一个空的全局 object ?

REPL和脚本之间的“这个”是不同的

读完mozilla文档后,我发现这个: 在全局执行上下文(在任何函数之外),这是指全局对象,无论是否在严格模式下。 玩了一段范围后,我发现在node.js REPL … > this === global true 但是当我用同一行创build一个脚本… $ cat > script.js console.log(this === global) $ node script.js false 是否有一个原因? 或者是一个错误?