Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 AS3向现有对象动态添加函数_Actionscript 3 - Fatal编程技术网

Actionscript 3 AS3向现有对象动态添加函数

Actionscript 3 AS3向现有对象动态添加函数,actionscript-3,Actionscript 3,为什么这样做有效: var s={}; s.WHEN={} 但这并不是: s.WHEN.foo=5; ? 运行这两行之后,我的s.WHEN对象只有foo:5,并且缺少info:function 我使用此功能通过浏览器中的控制台从flash查看 s.WHEN['info']=function(){trace('do something');} 然后,如果我这样做(在flash中): 我明白了: console.log(s.WHEN); console.log(s.WHEN['info'])

为什么这样做有效:

var s={};
s.WHEN={}
但这并不是:

s.WHEN.foo=5;
?

运行这两行之后,我的s.WHEN对象只有foo:5,并且缺少info:function

我使用此功能通过浏览器中的控制台从flash查看

s.WHEN['info']=function(){trace('do something');}
然后,如果我这样做(在flash中):

我明白了:

console.log(s.WHEN);
console.log(s.WHEN['info']);
但如果我这样做:

Object
> foo: 5
> __proto__: Object
我明白了:

console.log(s.WHEN);
console.log(s.WHEN['info']);
为什么它在那里而不是作为我的s.WHEN对象的一部分???

如果您尝试

function
您还将看到
function
,因为您引用的是函数而不是函数调用

因此,请使用:

trace( console.log );
但是您将什么也看不到(在Flash控制台中会有一个跟踪),因为WHEN引用的函数不返回任何内容

console.log( s.WHEN() );
s.WHEN['info']=function(){return'do something'};

console.log(s.WHEN());//对于我来说,跟踪
function(){}
yes,但它不是我对象的一部分。请参见上文^这与您的问题没有直接关系,但请对ActionScript3和OOP进行一些研究。AS3虽然非常类似,但不是Javascript,所以请尝试使用类,您会发现自己花更少的时间调试此类语句,花更多的时间处理实际逻辑,对吗?那么,我要创建一个新的对象类吗?具有功能的人??这不是一个对象所做的吗?从技术上讲,你不是在创建一个类,而是在创建一个
对象的实例,并将你的函数附加到这个类上。您还创建了匿名函数,而不是定义的函数。虽然Actionscript-3支持匿名,但建议使用已定义的函数,除非出于必要的原因,我不只是使用info函数进行跟踪。我还尝试在s.WHEN中放置其他方法,因此调用s.WHEN()似乎有点迟钝,因为它应该是s.WHEN['info'](),因为我以后可能也会使用s.WHEN['other']