我想调用second.js文件中first.js文件中定义的函数.这两个文件都在HTML文件中定义,如:
<script type="text/javascript" src="first.js"></script>
<script type="text/javascript" src="second.js"></script>
Run Code Online (Sandbox Code Playgroud)
我想调用中fn1()定义first.js的second.js.从我的搜索回答是如果first.js首先定义它是可能的,但从我的测试我没有找到任何方法来做到这一点.
这是我的代码:
second.js
document.getElementById("btn").onclick = function() {
fn1();
}
Run Code Online (Sandbox Code Playgroud)
first.js
function fn1() {
alert("external fn clicked");
}
Run Code Online (Sandbox Code Playgroud) 对于模块模式,我做的事情如下:
(function(namespace) {
// tons of code
// blabla
})(window.myGlobalNamespace);
Run Code Online (Sandbox Code Playgroud)
如何拆分代码?我可以想到几种方法,比如使用命名空间的层次结构,或者扩展外部的对象window.myGlobalNamespace.additionalFunc = function () {//blabla}.还有什么其他方法?优缺点都有什么?哪一个被认为是更好的做法?
这两个答案都提出了RequireJS.能否解释一下RequireJS如何解决这些问题:
first.js:
(function(context) {
var parentPrivate = 'parentPrivate';
})(window.myGlobalNamespace);
Run Code Online (Sandbox Code Playgroud)
second.js:
(function(context) {
this.childFunction = console.log('trying to access parent private field: ' + parentPriavte);
}(window.myGlobalNamespace.subNamspace);
Run Code Online (Sandbox Code Playgroud)
main.js:
window.myGlobalNamespace.subNamspace.childFunction(); // doesn't work
Run Code Online (Sandbox Code Playgroud)
人们可以做到
window.myGlobalNamespace.subNamspace.childFunction = function() {alert("a new function");}
Run Code Online (Sandbox Code Playgroud)
改变我的代码的行为!
这里有两个问题:
我们不能拥有儿童可以访问的字段,但不能访问外部公众(即受保护的).有没有办法实现这一目标?
如果没有,意味着如果我们想要访问,我们需要将其公之于众.然后用户将能够修改它!
更重要的是,所有公共功能都可以更改和替换.我不希望这种情况发生.
我不知道RequireJS如何解决这些问题.有人可以解释一下吗?
javascript module-pattern requirejs revealing-module-pattern
我正在尝试将JavaScript的单元测试添加到我的网站中.我使用VS2013,我的项目是一个ASP.NET网站.
基于建议(http://www.rhyous.com/2013/02/20/creating-a-qunit-test-project-in-visual-studio-2010/)我到目前为止做了:
写了简单的测试:
test( "Trainer should have non-empty group", function () {
var group = "group";
var trainer = new Trainer(123, "Name123", group, 123);
EQUAL(trainer.getTrainerGroup(), group);
});
Run Code Online (Sandbox Code Playgroud)注意:我的trainings.js文件包含
function Trainer(id, name, group, level) {
...
var _group = group;
this.getTrainerGroup = function () { return _group ; }
};
Run Code Online (Sandbox Code Playgroud)
当我执行我的测试时,我看到错误:未定义培训师.
它看起来像是我的班级无法识别.我觉得链接文件还不够,但我错过了什么?
请帮助添加对类和运行单元测试的原始文件的引用.
谢谢.
PS问题2:我可以添加对2个文件的引用(我的单元测试还需要一个在另一个文件中的类)吗?怎么样?
我正在使用J2V8在Android上执行JavaScript代码.在我的Java代码中,我可以访问和执行单独的.js文件的JavaScript函数吗?如果有可能,我该怎么办?
谢谢:
伯纳特
我在这里有点困惑...如果我有一个.js这样的函数文件:
function myMain() {
var count=0;
count++;
myHelper(count);
alert(count);
}
function myHelper(count) {
alert(count);
count++;
}
Run Code Online (Sandbox Code Playgroud)
我还可以myHelper()在另一个.js文件中调用另一种方法吗?或者有没有其他方法可以将count变量从一个函数传递到另一个函数然后它将被调用到其他.js文件.你对这个有什么想法吗?谢谢!
我有以下代码test1.js.
module.exports = function(d){
d.demo1 = function() {
return "DEMO 1";
},
d.demo2 = function() {
return "DEMO 2";
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试访问函数demo1 test2.js.在调用函数的代码下面.
var demo = require('./test1');
var result = demo.****; //code to call function demo1
console.log("calling function", result); //output should be "calling function DEMO 1"
Run Code Online (Sandbox Code Playgroud)
请帮助我如何访问此功能.谢谢.
javascript ×6
android ×1
count ×1
function ×1
html ×1
j2v8 ×1
loopbackjs ×1
node.js ×1
qunit ×1
requirejs ×1
unit-testing ×1
variables ×1