Google Apps Script извежда грешка при опит за извикване на Object.assign()

Google Apps Script изглежда не разпознава функцията Object.assign(). Когато се опитвам да го използвам, получавам грешката:

TypeError: Cannot find function assign in object function Object() { [native code for Object.Object, arity=1] }

Кодът, с който тествам функцията, е примерът, копиран директно от MDN:

function myFunction() {
  const object1 = {
    a: 1,
    b: 2,
    c: 3
  };

  const object2 = Object.assign({c: 4, d: 5}, object1); //error is thrown here

  console.log(object2.c, object2.d);
  // expected output: 3 5
}

Копирах и поставих горния код директно в конзолата за разработчици на Chrome, която работи добре и даде очаквания резултат.

Не мога да намеря нищо онлайн, което да казва, че тази конкретна функция не се поддържа от скрипт на приложения или нещо подобно. Е, какво става? Как мога да поправя това?


person Joel Rummel    schedule 16.08.2018    source източник
comment
Свързани: stackoverflow.com/questions/12279357/ , stackoverflow.com/questions/37768501/ и stackoverflow.com/questions/17252409/   -  person tehhowch    schedule 16.08.2018


Отговори (1)


Apps Script НЕ (от момента на писане) е пълно изпълнение на стандарта Ecmascript и в момента не поддържа първоначално Object.assign(). Можете обаче да използвате полифили (когато са жизнеспособни), които могат да добавят необходимата функционалност.

Има наличен polyfill за Object.assign() в MDN на следната връзка:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill

Забележка: Говори се, че Apps Script ще бъде надстроен (в някакъв момент в близко бъдеще), за да използва V8 двигателя на Chrome, като по този начин поддържа EcmaScript 2017.

person TheAddonDepot    schedule 16.08.2018
comment
Вече се поддържа developers.google.com/apps-script/guides/v8- време за изпълнение - person realfire; 23.07.2020
comment
При мен все още не работи. Вместо това използвах for (let [key, val] of Object.entries(obj2)) obj1[key] = val;. - person Thomas Kühn; 16.10.2020