Не удается добавить Object.assign на листы Google - PullRequest
0 голосов
/ 21 января 2019

Я добавил что-то подобное в файл utils.gs на листах Google:

Object.assign = function (target, source){
  if (!target || !source)
    throw new Error("Invalid arguments.");
  for (var property in source)
    if (source.hasOwnProperty(property))
      target[property] = source[property];
};

В этом же файле сценария я определил функцию, которая зависит от Object.assign, но я всегда получаю сообщение об ошибке:

TypeError: Не удается найти назначение функции в объектной функции Object () {[собственный код для Object.Object, arity = 1]}.

Любая идея, почему яне можете его добавить?

1 Ответ

0 голосов
/ 21 января 2019

Это какая-то ошибка в модульной системе.

Этот код работает:

main.gs

Object.assign = function (target, source){
  if (!target || !source)
    throw new Error("Invalid arguments.");
  for (var property in source)
    if (source.hasOwnProperty(property))
      target[property] = source[property];
  return target;
};

Logger.log(Object.assign({}, {a:1}));

function main(){
  Logger.log(Object.assign({}, {a:1}));
}

Но еслиЯ перемещаю Object.assign в отдельный файл:

main.gs

Logger.log(Object.assign({}, {a:1}));

function main(){
  Logger.log(Object.assign({}, {a:1}));
}

assign.gs

Object.assign = function (target, source){
  if (!target || !source)
    throw new Error("Invalid arguments.");
  for (var property in source)
    if (source.hasOwnProperty(property))
      target[property] = source[property];
  return target;
};

тогда работает только второй Object.assign(), который вызывается в функции main().Если я определю и вызову assign() вместо этого, тогда оба будут работать.

Обратите внимание, что обычно это не проблема, потому что вы обычно не добавляете обе строки в main.gs.Если вы используете вспомогательные функции для создания прототипа, лучше переместить каждый конструктор и определение прототипа в отдельный файл, а не определять их в main.gs.Таким образом, у вас не будет таких проблем, и вы сможете использовать Object.assign даже в других своих служебных функциях и определениях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...