var player = this.level.player; var displayPos = player.manPos; 将这两句修改为深拷贝
时间: 2024-10-21 12:18:02 浏览: 22
Flash-Player-11中H264和AVC编码视频直播.pdf
这两行代码看起来像是JavaScript中的引用类型赋值,其中`player`和`manPos`都是对象属性。如果你想要对这些变量进行深度复制(即创建全新的对象副本,包括其所有嵌套的对象),你可以使用`JSON.parse()`和`JSON.stringify()`组合,但这只适用于能序列化的数据。对于复杂的数据结构,如DOM元素、函数等,你需要递归地创建新的实例。
下面是修改后的示例:
```javascript
// 如果player是对象,并且可以序列化
var playerCopy = JSON.parse(JSON.stringify(this.level.player));
var displayPosCopy = playerCopy.manPos;
// 对于更复杂的对象,你可能需要递归地克隆
function deepClone(obj) {
if (obj instanceof Array) {
return obj.map(deepClone);
} else if (obj && typeof obj === 'object') {
let clone = new obj.constructor();
for (let key in obj) {
clone[key] = deepClone(obj[key]);
}
return clone;
} else {
return obj;
}
}
var playerDeepCopy = deepClone(this.level.player);
var displayPosDeepCopy = playerDeepCopy.manPos;
```
阅读全文