vue3取proxy 中的target 里面的数组
时间: 2023-05-10 09:01:32 浏览: 2028
在 Vue3 中,我们可以通过创建一个 Proxy 对象来监听另一个对象的变化,并且在变化时触发一些特定的行为。要从 proxy 的 target 中获得数组,可以使用以下代码:
```javascript
const myArray = ['apple', 'banana', 'orange'];
const myProxy = new Proxy(myArray, {
get(target, prop) {
// 判断是否为数组下标
if (typeof prop === 'string' && /^\d+$/.test(prop)) {
return target[Number(prop)];
}
// 不是数组下标则返回正常属性值
return target[prop];
}
});
console.log(myProxy[0]); // 输出: apple
const arrayFromTarget = Array.from(myProxy);
console.log(arrayFromTarget); // 输出: [ 'apple', 'banana', 'orange' ]
```
在这个例子中,我们创建了一个数组 `myArray`,然后创建了一个代理 `myProxy`,使用了 `get()` 方法来捕获访问代理属性的时机。在 `get()` 方法中,我们首先判断访问的属性名是否为数字形式的字符串,如果是,则返回代理 target 数组中对应下标的值。这里我们使用了 `Number()` 方法将属性名转化为数字下标。如果不是数字形式的字符串,则说明访问的是对象原有的属性,直接返回 target 对应属性的值即可。
最后,我们通过 `Array.from()` 方法将代理 target 中的数组转换为一个新的数组 `arrayFromTarget`,这样我们就可以获得我们需要的数组了。
阅读全文