Javascript 如何获得JXA对象的实际类

Javascript 如何获得JXA对象的实际类,javascript,applescript,javascript-automation,Javascript,Applescript,Javascript Automation,我试图区分iTunes播放列表是文件夹还是非文件夹 在AppleScript中,似乎有两种方法可以做到这一点: 我可以获取所有文件夹播放列表,并从用户播放列表中单独处理它们: set userPlaylists to user playlists set folderPlaylists to folder playlists -- …do processing folderList = itunesApp.playlists.whose({_match: [ObjectSpecifier().

我试图区分iTunes播放列表是文件夹还是非文件夹

在AppleScript中,似乎有两种方法可以做到这一点:

  • 我可以获取所有文件夹播放列表,并从用户播放列表中单独处理它们:

    set userPlaylists to user playlists
    set folderPlaylists to folder playlists
    -- …do processing
    
    folderList = itunesApp.playlists.whose({_match: [ObjectSpecifier().class, 'folderPlaylist']})()
    
  • 我可以使用
    pl的class is folder playlist
    (其中
    pl
    是我的播放列表)检查播放列表的类别

  • 这两种方法似乎都不适用于JXA

    第一种方法不起作用,因为访问
    .folderPlaylists()
    会导致
    错误:消息未被理解
    (其中
    app=Application('iTunes')
    )。所有其他类型的播放列表都可以通过这种方式访问(
    app.playlists()
    app.libraryPlaylists()
    app.radioTunerPlaylists()
    app.subscriptionPlaylists()
    app.audioCDPlaylists()
    所有工作)。这是虫子吗

    所以我试着复制第二种方法。据我所知,
    ObjectSpecifier.classOf
    应该将对象类型作为字符串提供给我。但是,它只返回给我对象的对象说明符所请求的类型

    因此,在AppleScript
    类中(第一项(名称为“«文件夹播放列表的名称”)
    给我
    文件夹播放列表
    对象说明符.classOf(app.playlists.whichs({name:'«文件夹播放列表的名称»})([0])
    只返回
    “播放列表”
    (大概是因为我使用了
    app.playlists
    来访问对象)


    是否有一个函数可以返回播放列表的实际类型(例如
    “文件夹播放列表”
    ,或
    “用户播放列表”
    )?

    从播放列表中获取文件夹:

    set userPlaylists to user playlists
    set folderPlaylists to folder playlists
    -- …do processing
    
    folderList = itunesApp.playlists.whose({_match: [ObjectSpecifier().class, 'folderPlaylist']})()
    

    要从播放列表对象中区分userPlaylist和folderPlaylist,请执行以下操作:

    • 使用:
      myobj.class()

    要从播放列表中获取文件夹,请执行以下操作:

    set userPlaylists to user playlists
    set folderPlaylists to folder playlists
    -- …do processing
    
    folderList = itunesApp.playlists.whose({_match: [ObjectSpecifier().class, 'folderPlaylist']})()
    

    要从播放列表对象中区分userPlaylist和folderPlaylist,请执行以下操作:

    • 使用:
      myobj.class()

    如此简单,却如此难以捉摸…非常感谢!如此简单,却如此难以捉摸…非常感谢!