首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >创建对象会复制旧的

创建对象会复制旧的
EN

Stack Overflow用户
提问于 2018-06-09 04:42:25
回答 1查看 32关注 0票数 0

我的HTML页面中有多个画布设置。我在JS/jQuery中通过它们各自的ID访问它们。在这个画布中有一个“玩家”-character(一个基本的正方形),它有一个固定的大小和一个可变的位置。

我像这样创建player对象:

代码语言:javascript
复制
<script>
var player = {
    xpos = 50,
    ypos = 50
}  
</script>

在同一个<script></script>中,我有一个如下所示的函数:

代码语言:javascript
复制
async animate(cid2){
var c = Object.create(player);
cid = $(cid2)[0];
ctx = cid.getContext("2d");
c.xpos = 50;
c.ypos = 50;
while(c.xpos < 300){
    await sleep(1100);
    c.xpos = c.xpos + 50;
    //draw a rectangle..
}

单击任何画布(使用jQuery .click函数)后,将使用相应的画布id执行<canvas id="test">

所有这些都很好用,只要页面上有一个画布。如果我假设有两个画布,控制台中会发生以下情况:

代码语言:javascript
复制
canvas1 is clicked!
X-Position: 50
X-Position: 100
canvas2 is clicked!
X-Position: 150
X-Position: 200

虽然单击了第二个画布,并且Object.create应该创建一个新对象,但它不起作用:它仍然访问旧对象。

我几乎可以肯定在SO上有一个答案,但尽管我尽了最大的努力,我还是找不到它,因为我不知道到底出了什么问题。

有没有人可以帮我或者推荐我一个我可以问的问题?

提前谢谢你。

EN

回答 1

Stack Overflow用户

发布于 2018-06-09 04:48:08

您可以使用(我认为是ECMAscript 6)扩展运算符

代码语言:javascript
复制
const obj = { myProp: 'hi' };
const newObj = { ...obj };
newObj.myProp = 'ciao';
console.log(obj); // still { myProp: 'hi' }

知道你应该有两个独立的对象,而不是一个副本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50768138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档