{__ob__: Observer}对象转成正常对象
时间: 2023-06-16 07:02:29 浏览: 403
这个对象看起来像是 Vue.js 中的响应式对象,__ob__ 属性是 Observer 类的实例,用于观察对象的变化。如果要将它转成普通的对象,可以使用 Vue.js 提供的 `toRaw` 方法,如下所示:
```javascript
const rawObj = Vue.toRaw(obj);
```
这样就可以得到一个没有响应式能力的普通对象了。注意,这个方法只在 Vue.js 3.x 中可用,如果你使用的是 Vue.js 2.x,可以使用 `JSON.parse(JSON.stringify(obj))` 实现类似的功能。但是要注意,这种方法无法处理对象中含有循环引用的情况。
相关问题
将[0 : {__ob__: Observer} 1 : {__ob__: Observer} 2 : {__ob__: Observer}] 处理成一个数组对象
这个数据看起来像是 Vue.js 的响应式数组对象。如果想将其处理成一个普通的数组对象,可以使用 `Array.from()` 方法或者展开运算符 `...`,示例如下:
```javascript
const originalArr = [
{__ob__: Observer},
{__ob__: Observer},
{__ob__: Observer}
];
// 使用 Array.from() 方法
const newArray1 = Array.from(originalArr);
console.log(newArray1); // [{__ob__: Observer}, {__ob__: Observer}, {__ob__: Observer}]
// 使用展开运算符 ...
const newArray2 = [...originalArr];
console.log(newArray2); // [{__ob__: Observer}, {__ob__: Observer}, {__ob__: Observer}]
```
以上两种方法都可以将响应式数组对象转换成普通的数组对象。
(5) [Array(1), Array(1), Array(1), Array(1), Array(1)] 0 : Array(1) 0 : {…} length : 1 __ob__ : Observer {value: Array(1), dep: Dep, vmCount: 0} [[Prototype]] : Array 1 : [{…}, __ob__: Observer] 2 : [{…}, __ob__: Observer] 3 : [{…}, __ob__: Observer] 4 : [{…}, __ob__: Observer] 如果他是这种结构,该怎么找到每一组的sid?
根据你提供的结构,数组的每个元素都是一个包含一个元素和一个 `Observer` 对象的数组,其中这个元素就是你需要查找的对象,它包含了 `sid` 属性。
因此,你可以使用 `forEach` 方法遍历数组,然后访问每个元素的第一个子元素,即包含 `sid` 属性的对象,如下所示:
```javascript
const arr = [ [ { sid: 1, name: 'foo' }, __ob__: Observer ], [ { sid: 2, name: 'bar' }, __ob__: Observer ], [ { sid: 3, name: 'baz' }, __ob__: Observer ], [ { sid: 4, name: 'qux' }, __ob__: Observer ], [ { sid: 5, name: 'quux' }, __ob__: Observer ] ];
arr.forEach(function(item) {
console.log(item[0].sid);
});
```
这样就可以依次输出每个元素中包含的 `sid` 属性的值了。
阅读全文