从原型中调用原型中的函数

时间:2016-08-04 13:58:45

标签: javascript jquery

我的jquery脚本中有两个原型:

script1.prototype.initScript = function() {
  //first one
   this.saveGrid = function () {
   alert("here");
 }
};
script1.prototype.otherFunction = function () {
 //second
 //script1.initScript.saveGrid ?
};

我想在saveGrid中致电otherFunction。我怎么能这样做?

编辑: 那里?

script1.prototype.initScript = function() {
  //first one
   this.saveGrid = function () {
   alert("here");
 }
};
script1.prototype.otherFunction = function () {
 //second
    $('button').on("click", function(){
     //call savegrid here
   });
};

感谢。

2 个答案:

答案 0 :(得分:3)

您可以在this上访问此功能,就像您在创建函数saveGrid时已经在示例中所做的那样。

你应该问自己,如果这是一个好主意,在另一个函数中创建一个函数并重新使用它们。如果您在otherFunction之前致电initScript,会发生什么?

function script1() {}

script1.prototype.initScript = function() {
    this.saveGrid = function() {
        alert("here");
    }
};

script1.prototype.otherFunction = function() {
    this.saveGrid();
};

var s = new script1();
s.initScript();
s.otherFunction();

对于第二个示例,您必须在创建事件侦听器之前存储this

function script1() {}

script1.prototype.initScript = function() {
    this.saveGrid = function() {
        alert("here");
    }
};

script1.prototype.otherFunction = function() {
    var that = this;

    $('button').on("click", function(){
        that.saveGrid();
    });
};

var s = new script1();
s.initScript();
s.otherFunction();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>click me</button>

答案 1 :(得分:0)

原型取决于类型。 正确的方法被定义为原型,因此您可以在不同的情况下调用它们

script1.prototype.saveGrid=function () {
   alert("here");
 }
script1.prototype.initScript = function() {
  //first one
   this.saveGrid()
};
script1.prototype.otherFunction = function () {
 //second
 //this.saveGrid()
};`

或者您可以定义一个对象,然后将原型关联起来

  var script1=(function () {
function initScript(){
   this.saveGrid();
}
function otherFunction(){
   this.saveGrid();
}
script1.prototype.saveGrid=function () {
   alert("here");
 }
});