如何在 JavaScript 中导出和导入两个不同的函数对象?
How to export and import two different function objects in JavaScript?
我使用 Jasmine-Node 来测试 Javascript 代码。
如何导出两个不同的函数对象,如 Confusions1 和 Confusions2,以便两者在 Jasmine-Node 测试文件中可用?
我的尝试是这样的:
// confusions.js
var Confusions1 = function() {};
Confusions1.prototype.foo = function(num) {
// keep track of how many times `foo` is called
this.count++;
}
module.exports = Confusions1;
// second function object
var Confusions2 = function() {};
Confusions2.prototype.foo = function() {
var a = 2;
this.bar();
};
Confusions2.prototype.bar = function() {
return this.a;
}
module.exports = Confusions2;
还有我的 Jasmine 测试文件:
// confusions.spec.js
var Confusion = require('./confusions.js');
describe("chapter 1, common misconception ", function() {
describe("to assume `this` refers to the function itself: ", function() {
var confusion = new Confusion();
// some test code omitted
});
describe("to assume `this` refers to the function's scope", function() {
var confusion = new Confusion();
// test code omitted
});
});
我想要这样 confusions.js
中的 Confusions1 和 Confusions2 都可用于 confusions.spec.js
中的两个嵌套描述块
我假设我必须在需要文件后以某种方式初始化不同的对象 var Confusion = require('./confusions.js');
类似于 var confusion1 = new Confusions1(); var confusion2 = new Confusions2();
但究竟如何(不将两个对象拆分为两个单独的文件)?
所以你想要一个模块,它的行为就像一个导出值的容器,换句话说,你想要导出两个函数:
// foo.js
var Confusion1 = function() {}
var Confusion2 = function() {}
...
exports.Confusion1 = Confusion1
exports.Confusion2 = Confusion2
无论你在哪里需要这个模块,你都可以要求这样的东西:
// bar.test.js
var confusions = require('path-to-the-foo-file')
console.log(confusions.Confusion1)
console.log(confusions.Confusion2)
此外,您似乎应该检查您使用的模块系统的总体工作方式,请检查此答案:module.exports vs exports in Node.js
我使用 Jasmine-Node 来测试 Javascript 代码。
如何导出两个不同的函数对象,如 Confusions1 和 Confusions2,以便两者在 Jasmine-Node 测试文件中可用?
我的尝试是这样的:
// confusions.js
var Confusions1 = function() {};
Confusions1.prototype.foo = function(num) {
// keep track of how many times `foo` is called
this.count++;
}
module.exports = Confusions1;
// second function object
var Confusions2 = function() {};
Confusions2.prototype.foo = function() {
var a = 2;
this.bar();
};
Confusions2.prototype.bar = function() {
return this.a;
}
module.exports = Confusions2;
还有我的 Jasmine 测试文件:
// confusions.spec.js
var Confusion = require('./confusions.js');
describe("chapter 1, common misconception ", function() {
describe("to assume `this` refers to the function itself: ", function() {
var confusion = new Confusion();
// some test code omitted
});
describe("to assume `this` refers to the function's scope", function() {
var confusion = new Confusion();
// test code omitted
});
});
我想要这样 confusions.js
中的 Confusions1 和 Confusions2 都可用于 confusions.spec.js
我假设我必须在需要文件后以某种方式初始化不同的对象 var Confusion = require('./confusions.js');
类似于 var confusion1 = new Confusions1(); var confusion2 = new Confusions2();
但究竟如何(不将两个对象拆分为两个单独的文件)?
所以你想要一个模块,它的行为就像一个导出值的容器,换句话说,你想要导出两个函数:
// foo.js
var Confusion1 = function() {}
var Confusion2 = function() {}
...
exports.Confusion1 = Confusion1
exports.Confusion2 = Confusion2
无论你在哪里需要这个模块,你都可以要求这样的东西:
// bar.test.js
var confusions = require('path-to-the-foo-file')
console.log(confusions.Confusion1)
console.log(confusions.Confusion2)
此外,您似乎应该检查您使用的模块系统的总体工作方式,请检查此答案:module.exports vs exports in Node.js