两个对象new了一个相同的对象,调用第一个的一个方法,走进了第二方法里

两个对象new了一个相同的UI组件,调用里面的方法,调用第一个,总是走到第二个对象的方法里,这里写一个简单得到例子:
        LayaSample.aa = new Child();
LayaSample.aa.num("1");

LayaSample.bb = new Child();
LayaSample.bb.num("2");

setTimeout(function () {
LayaSample.aa.shuchu();//输出这个组件num,结果为2,是LayaSample.bb的num
}, 1000);
已经排除了定时器的原因
已邀请:

日新月异

赞同来自: Solomon Mr.D

这种和LAYA引擎无关的问题 其实官方是不会管的. 
基本会按照你对TS理解不够处理
今天有时间特意还原了一下你的代码, 顺便蹭个热度, 
发现并没有你所说的问题 除非你的代码有问题 代码如下
输出结果为 1
 
// 程序入口
class LayaSample{

private static aa:Child;
private static bb:Child;

constructor()
{
Laya.init(600,400);
this.init();
}

private init(){
LayaSample.aa = new Child();
LayaSample.aa.num("1");

LayaSample.bb = new Child();
LayaSample.bb.num("2");

setTimeout(function () {
let s = LayaSample.aa.shuchu();//输出这个组件num,结果为2,是LayaSample.bb的num
console.info(s);
}, 1000);
}

}

class Child{
private _num:string;

public num(n:string){
this._num = n;
}

public shuchu(){
return this._num;
}
}

new LayaSample();
这个钱不好赚啊  哥们儿花20块来寻开心的吧

jiaxing_0329

赞同来自: Аη

你的对象有问题

侃掰掰

赞同来自: seacole 

把Child类发来看看

Kevin.Woo

赞同来自:

是不是函数覆盖了,只输出第二个。

189*****192

赞同来自:

Child 看一下

小卡

赞同来自:

你该不会是用了static变量存num了吧

何小威

赞同来自:

这种问题只会有一个可能,那就是两次调用都修改的是同一个对象中的值,所以返回的都是那个值的最终结果

Daring

赞同来自:

aa和bb的原型对象相同,aa和bb都是调用原型对象内的num方法,结果会被覆盖

阿易

赞同来自:

你第一次创建一个对象时,对象池中会有一个对象,第二次创建时,首先去对象池中查看是否有这个对象,有的话,直接将这个对象赋给新的对象,所以aa和bb其实是公用的一个对象,只是他们的名字不同,你改变这个对象的num,输出结果肯定就是你最后赋值的结果

Solomon

赞同来自:

哥们,发一下你那个bb的定义的代码,只看调用问题难以排查

苍颜无悔

赞同来自:

aa和bb其实是公用的一个对象,只是他们的名字不同,你改变这个对象的num,输出结果肯定就是你最后赋值的结果

six god

赞同来自:

大兄弟先去看看js的语法吧,这个问题和引擎无关啊

大胜

赞同来自:

把所有代码都发出来,这些代码是看不出问题来的

轻飘时刻

赞同来自:

1楼正解

该问题目前已经被锁定, 无法添加新回复

商务合作
商务合作