让我们先从一个例子:
对我来说,这似乎并没有太大的意义。斑点的网址是假设表示不会改变一成不变的数据块。但好像MSE能够让他们代表的内存缓冲区可变。
如何引擎盖下工作的呢?如果我们还想让斑点的URL表示内存一些可变缓冲区,我们如何才能做到这一点自己的JavaScript?
你要明白,BlobURIs不代表任何数据。他们只是链接,指向内存中的一些资源,就像串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);
那么对于blobURIs是一样的。该blobURI指向一个targe
对象,这个环节不能改变,但target
仍然是可变的。这是MediaSource的对象,但其他人也如此。
如果你还记得,几年前,我们仍然能够使用blobURIs为MediaStreams(是个坏主意),这是同样的过程中,blobURI被指向MediaStream对象,在未可变的方式,但媒体 - 数据是在恒定突变(一个流)。
即使对于文件,可以很好的有一个blobURI指向您的硬盘驱动器上的文件,这不会从你的硬盘中取出阻止你,即使blobURI现在指向无处不再。
与此方面的一个特定的情况下是BLOB的情况下,从存储器中的数据生成的(即不只是一个指向磁盘上的文件)。这里由一滴保存的数据是不变的,所以在这种情况下,确实blobURI指向对象,它保持不变的数据。
而对于你要求有一个blobURI指向存储在内存中的一些数据,但仍然可以修改此数据,这个能不能做到? 这是因为这种情况意味着您在使用内存数据的Blob对象,再次做在不可改变的状态保存数据创建了blobURI。
用于qazxsw POI的POI qazxsw是一种特殊情况。 qazxsw POI是一个特例。
本的观念,
斑点的网址是假设表示不会改变一成不变的数据块。
不一定是真实的。考虑包含,例如HTML和JavaScript Blob URL
。进一步的数据可以从原始MediaSource
,包括附加MediaSource
s产生。