父模块,
var Component = function () {
var _componentName;
var _test = 'ts';
return {
getName: function(){
console.log('getName() is called');
console.log(this._componentName);
console.log(_test);
return _componentName;
}
};
};
module.exports = Component;
子模块,
var Component = require('./component');
var Skip_button = function () {
var skipBtn = Component();
skipBtn._componentName = 'Skip_Btn';
return skipBtn;
};
module.exports = Skip_button;
在另一个地方,当我打电话
var skipBtn = Skip_button();
skipBtn.getName();
如果在Component中为console.log(this._componentName);
,则可以成功打印出该值。但是,如果是console.log(_componentName);
,则会出现未定义的错误。任何的想法?
[更新]
看一下这个。它按预期工作。 http://jsfiddle.net/nedvedyy/Lvxqjo9v/1所以问题仍然存在,如果console.log(this._componentName);
更改为console.log(_componentName);
答案 0 :(得分:1)
但是,如果是console.log(_componentName);,则会出现undefine错误 有
这是因为当您在匿名方法中执行[TestMethod,Isolated]
public void Isolate_OwinContext_Request_Query_Should_Be_Queryable()
{
// Arrange
var key = Constants.AuthorizeRequest.ClientId;
var collection = new Dictionary<string, string[]>() {
{key, new[]{"1", "2", "3"} },
{"B", new[]{"4", "5", "6"} }
};
// Can it be simpler than this?
var fakeContext = Isolate.Fake.Instance<IOwinContext>();
Isolate.WhenCalled(() => fakeContext.Request.Query).
WillReturnCollectionValuesOf(collection.AsQueryable());
// Act
var result = Program.SetUpQuery(fakeContext, null);
// Assert
CollectionAssert.AreEquivalent(collection[key], result);
}
并且return Skip_button;
不在全局上下文中时,它将返回Skip_button
。
如果您只是希望能够继承方法undefined
并希望能够调用Skip_button
,那么只需替换
getName
与
return Skip_button;
<强>样本强>
return skipBtn ;
&#13;
答案 1 :(得分:0)
Component
功能_componentName
和_test
不在this
范围内。但是,如果您在skipBtn._componentName
函数中设置Skip_button
,则表示您在_componentName
范围内设置了this
。
这就是console.log(this._componentName)
打印'Skip_Btn'
var Component = function () {
var _componentName;
var _test = 'ts';
return {
getName: function(){
console.log('getName() is called');
console.log(this._componentName);
console.log(this._test);
return _componentName;
}
};
};
var Skip_button = function () {
var skipBtn = Component();
skipBtn._componentName = 'Skip_Btn';
return skipBtn ;
};
var skipBtn = Skip_button();
skipBtn.getName();
如果您运行上述脚本this._test
将打印'未定义',因为_test
范围内不在this
。
var Component = function () {
var _componentName = 'test';
var _test = 'ts';
return {
getName: function(){
console.log('getName() is called');
console.log(_componentName);
console.log(_test);
return _componentName;
}
};
};
var Skip_button = function () {
var skipBtn = Component();
skipBtn._componentName = 'Skip_Btn';
return skipBtn ;
};
var skipBtn = Skip_button();
skipBtn.getName();
如果您运行上述代码,console.log(_componentName)
将打印'test',因为它有一些值