我在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:在对象函数Object()中找不到分配的函数{ [Object.Object的本机代码,arity = 1]}。
我为什么不能添加它?
答案 0 :(得分:0)
这是模块系统中的某种错误。
此代码有效:
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
。