Это какая-то ошибка в модульной системе.
Этот код работает:
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
даже в других своих служебных функциях и определениях.