Javascript Object из внешнего файла, программы
Я так запутался в объектной системе JavaScript. Я знаю, что все считается Object в JavaScript, но в этом коде Esprima я не вижу ни одного заявления, чтобы объявить доступ к этому проекту с помощью esrpima, как в следующей строке: ( https://github.com/ariya/esprima/blob/master/esprima.js)
var syntax = esprima.parse(text);
У меня вопрос, как и где определить что-то вроде esprima.parse(text)
в Javascript, чтобы его можно было экспортировать как внешний пакет и получить к нему доступ с именем объекта. Я знаю, как определить объект как Object = {a: "B"}; но не могу найти способ выяснить это. Пожалуйста, помогите мне!
(function (root, factory) {
'use strict';
// Universal Module Definition (UMD) to support AMD, CommonJS/Node.js,
// Rhino, and plain browser loading.
if (typeof define === 'function' && define.amd) {
define(['exports'], factory);
} else if (typeof exports !== 'undefined') {
factory(exports);
} else {
factory((root.esprima = {}));
}
}(this, function (exports) {
'use strict';
var Token,
TokenName,
...
1 ответ
Это потому что это не так. Имя переменной, esprima
, исходит из кода, который включает в себя esprima. Например:
var esprima = require('esprima');
esprima.parse(text);
Вы можете дать переменной любое другое имя:
var foo = require('esprima');
foo.parse(text);
Все esprima.js
Файл действительно определяет объект, который экспортируется. Он не диктует имя переменной, которой в конечном итоге назначается объект.
Если скрипт загружен в браузер, он на самом деле определяет esprima
в явном виде. Вы можете увидеть это в строке 55:
factory((root.esprima = {}));
Это создает объект и назначает его root.esprima
, Но это также вызов функции, поэтому объект передается factory
, которая является функцией, определенной в 57, которая принимает параметр exports
, Здесь код назначает все свойства.