removeAll vs在knockoutjs中用[]清空一个数组

msf*_*boy 33 knockout.js

每当我从服务器获取数据时,我想丢弃我的observablearray中的数据.

两者之间的功能有什么不同

self.myArray([]);
Run Code Online (Sandbox Code Playgroud)

VS

self.myArray.removeAll();
Run Code Online (Sandbox Code Playgroud)

nem*_*esv 58

从最终结果的角度来看,两个调用之间没有区别,因此最终不会myArray包含任何元素.

但是有一个小的区别(如果你不关心不同的返回值):

self.myArray([]);
Run Code Online (Sandbox Code Playgroud)

使用新创建的空数组替换基础数组实例.

虽然

self.myArray.removeAll();
Run Code Online (Sandbox Code Playgroud)

将从基础数组中删除所有项目,但它将保留数组实例.

因此,如果您有多个ko.observableArray使用相同的底层数组,您可以看到两个调用之间的差异:

演示JSFiddle.

  • 从内存的角度来看,`removeAll()` 更好吗?例如,它会释放所有保留在数组上的内存吗? (2认同)