我缺少Javascript的一些东西吗?

我缺少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,看看它是否能给我带来一些东西,但我

我有个小问题。我似乎无法使用object.create()、object.setprototypeof()或此列表中的任何函数:

当脚本尝试使用object.create()时,我收到一条“function is undefined”消息

我需要它主要是一个自定义的JS脚本的后效,我发现网上,我已经尝试了各种不同的脚本编辑器,如Adobe ExtendScript工具包,Monodevelop和VS


我是不是错过了图书馆什么的?我试图安装最新的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; 
}