Я хотел бы написать модуль javascript и методы доступа с функциональностью «Перейти к определению» кода Visual Studio (F12 или ctrl + щелчок левой кнопкой мыши)
Он хорошо работает с простыми модулями, но каждый раз, когда я хочу расширить модуль с переменной в аргументе, код Visual Studio не может достичь функции внутри моего модуля.
Я написал небольшой пример, чтобы воспроизвести его.
Просто скопируйте и вставьте его в новый файл в код Visual Studio.
Для информации я использую версию 1.34 кода Visual Studio.
//////////////////////////////////////////////////////////////////////////////
// Example 1:
// - Function fntBad() from libFntBad.fntBad(); is not reachable with ctrl + left mouse click
////////////////////////////////////////
////// Library 1
var libFntBad = (function(moduleExtended) {
var self = moduleExtended;
self.fntBad = function() {
console.log("libFntBad - fntBad");
return false;
};
return self;
})(libFntBad || {});
////////////////////////////////////////
////////////////////////////////////////
////// Library 2
var libFntGood = (function() {
var self = {};
self.fntGood = function() {
console.log("libFntGood - fntGood");
return true;
};
return self;
})();
////////////////////////////////////////
////////////////////////////////////////
////// Program that use libraries
var libCallFnt = (function() {
var self = {};
self.callFnt1 = function(s) {
console.log(s);
libFntBad.fntBad(); // Not found
};
self.callFnt2 = function(s) {
console.log(s);
libFntGood.fntGood(); // Found in Library 2
};
return self;
})();
libCallFnt.callFnt1("Fnt1"); // Reachable
libCallFnt.callFnt2("Fnt2"); // Reachable
libFntBad.fntBad(); // Not reachable
libFntGood.fntGood(); // Reachable
//////////////////////////////////////////////////////////////////////////////
// Example 2:
// - Function extension from ModuleTwo.extension is not reachable with ctrl + left mouse click
var Module = (function () {
var _privateMethod = function () {
// private
console.log("_privateMethod");
};
var oneMethod = function () {
// public
console.log("oneMethod");
_privateMethod();
};
var anotherMethod = function () {
// public
console.log("anotherMethod");
};
return {
oneMethod: oneMethod,
anotherMethod: anotherMethod
};
})();
var ModuleTwo = (function (mod) {
mod.extension = function () {
// another method!
console.log("Module.extension");
};
return mod;
})(Module || {});
Module.oneMethod();
ModuleTwo.extension(); // Not reachable
Я ожидаю достичь фрагмента кода, помеченного как «Недоступный».
Что не так с моим кодом?
Есть ли другой способ заставить его работать в коде Visual Studio?
Редактор NetBeans способен правильно перемещаться между методами, поэтому я полагаю, что мой кусок кода неплохой.