Javascript 如何获得JXA对象的实际类
我试图区分iTunes播放列表是文件夹还是非文件夹 在AppleScript中,似乎有两种方法可以做到这一点: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().
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
是我的播放列表)检查播放列表的类别.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()
如此简单,却如此难以捉摸…非常感谢!如此简单,却如此难以捉摸…非常感谢!