У меня есть класс со свойством, которое может быть изображением (то есть элементом IMG) или Canvas. Когда я сериализую его в JSON, мне нужно преобразовать его в текстовую строку. Если это Canvas, я могу вызвать Canvas # toDataURL. Но если это изображение, мне сначала нужно нарисовать его на холсте с помощью Canvas # drawImage, а затем сериализовать этот холст с помощью toDataURL.
Так как мне определить, является ли объект холстом или изображением? (Поскольку Canvas # drawImage способен принимать объекты Image или Canvas в качестве аргумента, должен быть способ.)
Я видел, что некоторые программисты проверяют наличие определенных свойств или функций для определения класса, но мне было интересно, есть ли более разумный способ, который не сломается, если API, представленный этими объектами, изменится.