我缺少Javascript的一些东西吗?
我有个小问题。我似乎无法使用object.create()、object.setprototypeof()或此列表中的任何函数: 当脚本尝试使用object.create()时,我收到一条“function is undefined”消息 我需要它主要是一个自定义的JS脚本的后效,我发现网上,我已经尝试了各种不同的脚本编辑器,如Adobe ExtendScript工具包,Monodevelop和VS我缺少Javascript的一些东西吗?,javascript,adobe,extendscript,after-effects,Javascript,Adobe,Extendscript,After Effects,我有个小问题。我似乎无法使用object.create()、object.setprototypeof()或此列表中的任何函数: 当脚本尝试使用object.create()时,我收到一条“function is undefined”消息 我需要它主要是一个自定义的JS脚本的后效,我发现网上,我已经尝试了各种不同的脚本编辑器,如Adobe ExtendScript工具包,Monodevelop和VS 我是不是错过了图书馆什么的?我试图安装最新的JavaSDK,看看它是否能给我带来一些东西,但我
我是不是错过了图书馆什么的?我试图安装最新的JavaSDK,看看它是否能给我带来一些东西,但我没有运气。有人能帮我吗?您可以同时使用
对象。创建和对象。setPrototypeOf
ExtendScript实际上使用的是EcmaScript 3,它没有版本5中提供的所有JavaScript功能
正如您在MDN中看到的,对于对象.create
:
初步定义。在JavaScript 1.8.5中实现
对于Object.setPrototypeOf
:最初的定义是在EcmaScript 2015中
但是,对于许多这些功能,您可以创建一个多边形填充以支持新功能,例如Object.create
,有时MDN会提供这些多边形填充:
对象。创建
多边形填充:
Object.setPrototypeOf
polyfill:
附言
- 正如@Ozan在评论中所说:
正在尝试使用Object.create,因为它区分大小写
- 对于某些函数,不能使用多边形填充来支持这些函数(但可以使用Transpiller,如babel)
- 某些MDN多边形填充不支持EcmaScript 3
尝试使用Object.create,因为它区分大小写。请发布您的代码,我相信这是一个语法问题,用于重播。同样,代码是由其他人编写的,用于将after effects中的动画导出到另一个程序中。链接:
if (typeof Object.create != 'function') {
Object.create = (function(undefined) {
var Temp = function() {};
return function (prototype, propertiesObject) {
if(prototype !== Object(prototype)) {
throw TypeError(
'Argument must be an object, or null'
);
}
Temp.prototype = prototype || {};
var result = new Temp();
Temp.prototype = null;
if (propertiesObject !== undefined) {
Object.defineProperties(result, propertiesObject);
}
// to imitate the case of Object.create(null)
if(prototype === null) {
result.__proto__ = null;
}
return result;
};
})();
}
Object.setPrototypeOf = Object.setPrototypeOf || function(obj, proto) {
obj.__proto__ = proto;
return obj;
}