本文共 1663 字,大约阅读时间需要 5 分钟。
FB4与FD3均存在一个代码智能提示的bug,一不小心你就会写出错误的代码,并且编译器不会给你任何错误信息。 一、问题 代码 1:A reference to a method’s containing object. When a script executes, the this keyword references the object that contains the script. Inside a method body, the this keyword references the class instance that contains the called method.this关键字真正涵义等同于“owner”,意指包含当前函数体的对象。在代码1中,this指obj1。在代码2中,this指一个全局的对象(并非包涵变量author的对象),所以this.author均是不可见的,编辑器向我们给出了错误的智能提示。 二、解决方案 那么,在代码1或2中,如果确实我们需要访问变量author,应该怎么做呢?答案很简单,把this关键字去掉就可以了。在AS3中,如果没有指定对象或关键字this,avm2优先在当前作用域内查找变量,如果找不到,则向上查找。 三、总结 1,关键字this指的是包涵当前函数体的上一级对象 2,未指定对象或this的变量,avm2如果在当前作用域内找不到该变量,则尝试在上一级作用域内查找。 四、思考与练习 1,想一想下面的代码的输出结果是什么?为什么?public function as3():void{var author :String = "as3 fans";trace(author);}private var author : String = "sban"; 2,想一想在代码2中,如果不去掉关键字this,如何使程序得到同样的输出结果?trace(item, this.author);
转载地址:http://agjsi.baihongyu.com/