我在 Google 表格中的 utils.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];
};
在同一个脚本文件中,我定义了一个依赖于Object.assign
的函数,但我总是收到错误消息:
TypeError: Cannot find function assign in object function Object() { [native code for Object.Object, arity=1] }.
知道为什么我无法添加它吗?
最佳答案
这是模块系统中的某种错误。
此代码有效:
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}));
}
分配.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
中。如果您使用实用函数来帮助创建原型(prototype),那么最好将每个构造函数和原型(prototype)定义移动到单独的文件中,而不是在 main.gs
中定义它们。这样您就不会遇到此类问题,甚至可以在其他实用函数和定义中使用 Object.assign
。
关于javascript - 无法将 Object.assign 添加到 Google 表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54282082/