Вы должны понимать, что BlobURI не представляют никаких данных .Это просто ссылки, указывающие на некоторый ресурс в памяти, точно так же, как строка https://stackoverflow.com/questions/54613972
не содержит ничего из того, что вы читаете как таковое, она просто указывает на инструкцию сервера, которая затем сгенерирует страницу.
Их ссылку можно назвать неизменной, после того как вы сгенерировали ее с помощью URL.createObjectURL(target)
, вы не можете изменить ее target
, как если бы вы использовали ключевое слово const
.
Возьмем, к примеру, const foo = {}
, теперь foo
нельзя установить для чего-то другого, кроме этого объекта. Но объект, на который указывает foo
адрес, все еще изменчив.foo.bar = 'baz'
еще можно сделать.
const foo = {};
try{
foo = 'fails';
}
catch(e) {
console.error(e);
}
foo.mutable = true;
console.log(foo);
Ну, для blobURI это то же самое.BlobURI указывает на объект targe
, эту ссылку нельзя изменить, но target
все еще изменчив.Это верно для объектов MediaSource, но также и для других.
Если вы помните, несколько лет назад мы все еще могли использовать blobURI для MediaStreams (это была плохая идея), это был тот же процесс, который указывал blobURI.к объекту MediaStream, не изменяемым образом, но медиа-данные находились в постоянной мутации (поток).
И даже для Файлов вы можете очень хорошо иметь blobURI, который указывает на Файл наваш жесткий диск, это не помешает вам удалить его с жесткого диска, даже если blobURI теперь нигде больше не указывает.
Один особый случай в этом отношении - это случай Blob, сгенерированный изданные в памяти (т.е. не просто указатель на файл на диске).Здесь данные, хранящиеся в Blob, являются неизменяемыми, поэтому в этом случае blobURI действительно указывает на объект, который содержит неизменяемые данные.
И вы запрашиваете, чтобы blobURI указывал на некоторые данные, хранящиеся в памяти,но все же иметь возможность изменять эти данные, это не может быть сделано ...
Это потому, что этот сценарий подразумевает, что вы создали свой blobURI из объекта Blob, используя данные в памяти, которая снова сохраняет данные в неизменяемомсостояние.