[英]How to call a function in another Javascript file from a constructor?
我正在处理url处理类,并希望通过构造函数访问它。 例如,调用new Url(“ http://www.stackoverflow.com?param=value ”)将返回url的不同组成部分。
虽然我具有基本功能,但无法在其他文件中使用构造函数。 在这种情况下,我想从Runner.js调用url.js中的Url。
Runner.js
define(['url'], function (url) {
"use strict";
function someParsing() {
var urlText, url1;
urlText = "http://www.stackoverflow.com";
url1 = new Url(urlText);
return url1;
}
return {
someParsing: someParsing
}
});
url.js
define(function () {
"use strict";
function Url(urlText) {
return urlText;
}
return {
urlText: urlText
}
});
我得到的错误
TypeError:“未定义”不是构造函数(正在评估“ new Url(urlText)”)
什么是正确的设置方式,以便可以在Runner.js中使用Url构造函数?
看起来您正在使用require.js,是吗?
简短答案:
在url.js中:
define(function () {
"use strict";
function Url(urlText) {
return urlText;
}
return Url;
}
在Runner.js中:
define(['url'], function (Url) {
长答案:
注意,您传入了一个匿名函数来定义。 这是在require.js决定运行模块时定义模块的代码。 该函数内部的任何var或函数声明都在本地范围内。
使对象可用于其他模块的方法是通过返回它们(从模块定义函数中)。 无论您返回什么,require.js都会为其他模块提供所需的内容,这些模块要求您刚刚定义的模块。
因此,如果您在url.js中返回Url构造函数,则当您在Runner.js中要求“ url”模块时,require.js会将Url构造函数传递给您的“ runner”模块定义函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.