• AS3面试题 个人理解


    现在as3面试 感觉就那几个题目来回考。
    有了题库,大家都看了 都答上来了 题目本身也就失去了考核的意义。
    而且题目本身也有很多偏的(不常用的)在考。

    真正的面试官现在肯定也不会把笔试成绩当作标准。
    所谓:行家一出手 就知有没有。多聊聊技术环节便可鉴定。

    =========================================

    Null NaN undefined的区别
    string array object的默认值是Null
    Number 默认值是NaN

    NaN 值是 Number 数据类型的特殊成员,用来表示“非数字”值。
    未定义类型的 :undefined

      示例:   var s:String;
            trace(s);//null 未赋值的String类型的默认值null
          var n:Number;
          trace(n);//NaN Number类型默认值NaN
          var h;
          trace(h);//未定义类型 undefined
    isNaN(n:Number=null):Boolean

    如果该值为 NaN(非数字),则返回 trueisNaN() 函数可用于检查一个数学表达式是否成功地计算为一个数字。
    var s:String="a";
    trace(isNaN(Number(s)));//是非数字 值。返回true

    NaN==NaN  false;
    NaN!=NaN   true;
          

          

    获取一个点的全局坐标,点所属于的Displayobject为dis
    var gP:Point=dis.parent.localToGlobal(new Point(dis.x,dis.y));
    获取一个DisplayObject的localX 和 localY转换成全局坐标
    var gP:Point=dis.parent.localToGlobal(new Point(dis.x+e.localX,dis.y+e.localY));

    总结:求点P的全局坐标。那么就是 p所属的DisplayObject的parent来转化

    String的slice(start,end);
               substring(start,end);
               substr(start,len)

    三者都是获取子串的功能。都不会影响原始字符串。

    slice(start,end);//可以简单理解为从start处 到end 砍下来。下刀处在end那 end被砍坏了。所以只留下start 到end前面的
                          必须start要小于end的位置 否则返回空白
             start end 都可以为负数
    substring(start,end);//和slice相似。但它会自动的把参数大的 给end 参数小的给start
                  start 和 end都不能为负数。否则会当作0
    如果start<end那么slice和substring是没有任何区别的

    var str:String="0123456789";
    trace(str.subString(1,6));//12345
    trace(str.subString(6,1));//12345

    另:最后一个字符的索引也可以是-1 。倒数第二个则是-2。start 不可以为负数

    in 是用来判断 数组里含有 某个索引 或者Object Dictionary含有某个键。不是含有某个值

    var ary:Array=["1","2","5","4"];
    trace("3" in ary);//true
    trace(3 in ary);//true
    trace("5" in ary);//true
    trace(5 in ary);//true

    var obj:Object={3:333,name:"kkkk"};
    trace("name" in obj);
    trace(3 in obj);
    trace("3" in obj);
    以上示例说明 in 在判断的时候 会自动的把 参数转换成需要的类型。
    XX in Array 则 XX会转为int 
    XX in Object则XX会转为string

    breakcontinue(他们行下面的代码被忽略)
    break直接中断结束整个for循环
    continue只跳过当前一次循环。

    数组的浅复制深复制

    var ary:Array=[1,"abc",{name:"dd",age:33}];
    var copy:Array=ary.slice();
    copy[0]=2;
    copy[1]="newabc";
    copy[2].name="newName";
    trace(ary[0],ary[1],ary[2].name,ary[2].age);
    trace(copy[0],copy[1],copy[2].name,copy[2].age);

    上述是数组浅复制。数组通过slice()或contact()不传入任何参数。则返回数组的浅复制。
    浅复制:对于数组的值类型对象直接复制到新数组里,对于引用则共同引用。
    即当副本修改的是负责数据类型后,原数组的复杂类型数据也会相应变化。
    但简单类型各自维护。
    对于数组里的元素都是值类型对象则不区分浅复制和深复制。

    深复制:其所有的元素都会得到真正的复制,此时数组存储的是不同的引用。
    实现要通过ByteArray

                var ary:Array=[1,"abc",{name:"dd",age:33}];
                var byteAry:ByteArray=new ByteArray();
                byteAry.writeObject(ary);
                byteAry.position=0;
                var newAry:Array=byteAry.readObject() as Array;
                newAry[0]=2;
                newAry[1]="def";
                newAry[2].name="newABC";
                newAry[2].age=44;
                trace(ary[0],ary[1],ary[2].name,ary[2].age);
                trace(newAry[0],newAry[1],newAry[2].name,newAry[2].age);

    内存泄漏
    http://blog.sina.com.cn/s/blog_63f4be9b01012hsc.html



  • 相关阅读:
    黑马程序员简易聊天器笔记
    黑马程序员 最简单的浏览器
    Java 窗体布局
    黑马程序员交通系统
    黑马程序员–java 网络处理
    Swing入门级项目全程实录学习总结
    Swing入门级项目全程实录第7讲
    Swing入门级项目全程实录第3讲
    Swing入门级项目全程实录第2讲
    HTML基础教程
  • 原文地址:https://www.cnblogs.com/naiking/p/3492130.html
Copyright © 2020-2023  润新知