2016-08-04 8 views
0

У меня есть два прототипа в моем 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 
    }); 
}; 

Спасибо.

ответ

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>

+0

Ok спасибо за ваши объяснения. И если 'saveGrid' находится в другой функции? Я изменил свое первое сообщение для другой ситуации. Спасибо – PSport

+0

Я уже редактировал мой ответ, @PSport! ;) – eisbehr

+0

Отлично, спасибо! :) теперь все ясно – PSport

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"); 
} 
}); 
Смежные вопросы