如何访问 require 模块节点上的父变量
How to access parent variable on require module node
如何访问导出模块上的父变量?
function ThunderClient(key){//my class
this.key = key //i want have access to this variable
}
ThunderClient.prototype.users = require('./modules/users')(route_rest,this.key); //this.key are key of ThunderClient
ThunderClient.prototype.address = require('./modules/address')(route_rest,this.key);//this.key are key of ThunderClient
require('./modules/address')(route_rest,this.key);
this.key 是 ThunderClient 的一个键(在构建时我填充了这个变量)。
在我的模块用户上,我希望可以访问 ThunderClient 的 this.key,但是如果我在 require 上使用 "this.key" 不起作用,我该怎么做?
将您导入的函数放在顶部:
var users = require('./modules/users');
var address = require('./modules/address');
然后只包装那些导入的函数:
ThunderClient.prototype.users = function(){ return users(route_rest, this.key); }
ThunderClient.prototype.address = function(){ return address(route_rest, this.key); }
如果您希望在创建时分配实例特定 users
,那么您需要将它们添加到构造函数中创建的实例中,而不是在原型中。
function ThunderClient(key){
this.key = key;
this.users = users(route_rest, this.key);
this.address = address(route_rest, this.key);
}
行 ThunderClient.prototype.users = require('...')
和 ThunderClient.prototype.address
正在全局范围内执行,而不是 ThunderClient
模块的实例。
例如:ThunderClient.prototype.users = require('./modules/users')(route_rest,this.key);
在 Web 浏览器中,this
将是 window
,这意味着您正在检查 window.key
而不是执行以下操作:
ThunderClient.prototype.getKey = function() {
return this.key; // here, 'this' is definitely our module instance
};
var client = new ThunderClient('abc');
console.log(client.getKey); // abc
如何访问导出模块上的父变量?
function ThunderClient(key){//my class
this.key = key //i want have access to this variable
}
ThunderClient.prototype.users = require('./modules/users')(route_rest,this.key); //this.key are key of ThunderClient
ThunderClient.prototype.address = require('./modules/address')(route_rest,this.key);//this.key are key of ThunderClient
require('./modules/address')(route_rest,this.key);
this.key 是 ThunderClient 的一个键(在构建时我填充了这个变量)。 在我的模块用户上,我希望可以访问 ThunderClient 的 this.key,但是如果我在 require 上使用 "this.key" 不起作用,我该怎么做?
将您导入的函数放在顶部:
var users = require('./modules/users');
var address = require('./modules/address');
然后只包装那些导入的函数:
ThunderClient.prototype.users = function(){ return users(route_rest, this.key); }
ThunderClient.prototype.address = function(){ return address(route_rest, this.key); }
如果您希望在创建时分配实例特定 users
,那么您需要将它们添加到构造函数中创建的实例中,而不是在原型中。
function ThunderClient(key){
this.key = key;
this.users = users(route_rest, this.key);
this.address = address(route_rest, this.key);
}
行 ThunderClient.prototype.users = require('...')
和 ThunderClient.prototype.address
正在全局范围内执行,而不是 ThunderClient
模块的实例。
例如:ThunderClient.prototype.users = require('./modules/users')(route_rest,this.key);
在 Web 浏览器中,this
将是 window
,这意味着您正在检查 window.key
而不是执行以下操作:
ThunderClient.prototype.getKey = function() {
return this.key; // here, 'this' is definitely our module instance
};
var client = new ThunderClient('abc');
console.log(client.getKey); // abc