相关疑难解决方法(0)

在另一个js文件中调用javascript函数

我想调用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.jssecond.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)

html javascript

114
推荐指数
9
解决办法
43万
查看次数

模块模式 - 如何将一个模块的代码拆分成不同的js文件?

对于模块模式,我做的事情如下:

(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)

改变我的代码的行为!

这里有两个问题:

  1. 我们不能拥有儿童可以访问的字段,但不能访问外部公众(即受保护的).有没有办法实现这一目标?

  2. 如果没有,意味着如果我们想要访问,我们需要将其公之于众.然后用户将能够修改它!

更重要的是,所有公共功能都可以更改和替换.我不希望这种情况发生.

我不知道RequireJS如何解决这些问题.有人可以解释一下吗?

javascript module-pattern requirejs revealing-module-pattern

11
推荐指数
1
解决办法
2万
查看次数

如何参考另一个类创建QUnit测试?

我正在尝试将JavaScript的单元测试添加到我的网站中.我使用VS2013,我的项目是一个ASP.NET网站.

基于建议(http://www.rhyous.com/2013/02/20/creating-a-qunit-test-project-in-visual-studio-2010/)我到目前为止做了:

  1. 创建了新的ASP.NET应用程序
  2. 导入的QUnit(使用NuGet)
  3. 进入"Scripts"在我的原始网站中添加了js文件的链接(文件PlayerSkill.js - 包含PlayerSkill类和trainings.js - 包含Trainer和其他一些类)
  4. 创建新文件夹"TestScripts"
  5. 添加了TrainingTests.js文件
  6. 写了简单的测试:

     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个文件的引用(我的单元测试还需要一个在另一个文件中的类)吗?怎么样?

javascript unit-testing qunit visual-studio

8
推荐指数
1
解决办法
2581
查看次数

使用J2V8从.js执行函数

我正在使用J2V8在Android上执行JavaScript代码.在我的Java代码中,我可以访问和执行单独的.js文件的JavaScript函数吗?如果有可能,我该怎么办?

谢谢:

伯纳特

javascript android j2v8

5
推荐指数
1
解决办法
1994
查看次数

在另一个JS文件中调用具有相同名称的函数

我在这里有点困惑...如果我有一个.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文件.你对这个有什么想法吗?谢谢!

javascript variables function count

3
推荐指数
1
解决办法
1万
查看次数

如何从module.exports访问函数

我有以下代码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 node.js loopbackjs

1
推荐指数
1
解决办法
1237
查看次数