访问函数JavaScript中的函数

时间:2015-02-11 00:26:34

标签: javascript jquery dry

我下面的这段代码不是干的。我想要做的是剪切它,因此var = text下面的所有内容只能使用一次而不是两次。

我的概念是,在更大的函数中关闭这两个函数(例如guess())并在其中保持修剪的correctGuess()和incorrectGuess()。

现在问题是,如何从外部范围调用如上所述的嵌套函数。我在想smth就像:guess()。correctGuess()这显然是错的,但我想分享一个概念。

此外,例如,将调用correctGuess(),我们的main guess()函数中的其余命令会被执行吗?

function correctGuess(i) {

    totalScore++;
    questionNumber++;

    var text = "Correct!";

    var updatePage = ['<div id="answerDiv">' +
        '<h1>' + text + '<h1>' +
        '<h2>Total Score: ' + totalScore + '</h2></div>'
    ];

    mainContent[html](updatePage);

    $('#answerDiv')[fadeIn]("slow");
    $('#answerDiv').append('<button id="nextButton">Next Question</button>');

    $('#nextButton').on('click', function() {
        if (questionNumber == allQuestions.length && totalScore <= 4) {
            results()
        } else {
            question(questionNumber)
        }
    })
};

var incorrectGuess = function(i) {
    totalScore--;
    questionNumber++;

    var text = "Wrong!";

    var updatePage = ['<div id="answerDiv">' +
        '<h1>' + text + '<h1>' +
        '<h2>Total Score: ' + totalScore + '</h2></div>'
    ];

    mainContent[html](updatePage);

    $('#answerDiv')[fadeIn]("slow");
    $('#answerDiv').append('<button id="nextButton">Next Question</button>');

    $('#nextButton').on('click', function() {
        if (questionNumber == allQuestions.length && totalScore <= 4) {
            results();
        } else {
            question(questionNumber);
        }

    });

};

2 个答案:

答案 0 :(得分:-2)

http://www.w3schools.com/js/js_objects.asp

从您的问题看来,您似乎对对象表示法并不十分熟悉。阅读上面的链接,然后尝试使用2个成员函数创建一个js“guess”对象。正确和错误的猜测。

答案 1 :(得分:-2)

您需要使用this关键字。

function guess(){
  /* do stuff here for guess() */
  this.correct = function(){
    /* Do stuff for correct */
  }
  this.wrong = function(){
    /* Do stuff for wrong */
  }
  return this;
}

由于您已退回this,现在可以使用以下方式访问correct()wrong()函数:

guess().correct();
// AND
guess().wrong();

请注意,每次调用guess().correct()guess().wrong()时都会调用您在guess()内部以及两个嵌套函数外部编写的代码。

如果您不希望任何特定代码在每次“猜测”时执行,无论是对还是错,那么我建议只将correct()wrong()函数存储在对象文字中。

var guess = {
  correct: function(){
    // Code for "correct" here
  },
  wrong: function(){
    // Code for "wrong" here
  }
}

然后您可以使用

访问它们
guess.correct();
// AND
guess.wrong();