Невозможно получить доступ к функции внутри функции JavaScript

1

Я пытаюсь немного очистить свой код, поэтому я создаю небольшие объекты или библиотеки (назовите его так, как вы хотите), например:

function myLib() {
    this.get = function() { ... };
    ...
};

Проблема в том, когда я пытаюсь называть его как myLib.get(). Это вызывает следующую ошибку:

Uncaught TypeError: myLib.get is not a function

Я попытался инкапсулировать вызов в $(document).ready(), но это не помогло.

Не могли бы вы мне помочь?

Спасибо!

  • 0
    что такое myLib в myLib.get() ?
Теги:
function

3 ответа

2
Лучший ответ

myLib используется для "libary", и вы хотите назвать этот метод get get libary.

Статический экземпляр лучше в вашем случае.

const myLib = {
    get:function(){},
    get2:function(){}
    ...
};
myLib.get();
myLib.get2();
2

поэтому я создаю небольшие объекты или библиотеки (назовите его так, как вы хотите)

В вашем случае вы создаете конструктор, myLib - это конструктор, а не только function, и вы не можете напрямую обращаться к свойствам и методам функции, почему вы получили исключение.

Поэтому вам нужно получить экземпляр myLib, чтобы вызвать метод get или получить доступ к любому из его элементов (методов).

function myLib() {
    this.get = function() { console.log("get called!!"); };
};
let lib = new myLib();
lib.get();

Замечания:

И из Справочника MDN для функций вы можете видеть, что:

this ключевое слово не относится к функции исполняемой в данный момент, так что вы должны ссылаться на Function объектов по имени, даже в теле функции.

1

Вы должны использовать myLib как конструктор, то есть:

var lib = new myLib();
lib.get();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню