zoukankan      html  css  js  c++  java
  • JavaScript的Object

    题目

    var foo = new Object();
    var bar = new Object();
    var map = new Object();
        
    map[foo] = "foo";
    map[bar] = "bar";
        
    alert(map[foo]);  // what will this display??
    

    解析

    javaScript里的Object都是以 key-value的集合形式存在的
    其中key都是以string的形式存在的,如果key不是string,则javaScript会自动将key的类型转为string
    题中 -> foo 和 bar 都是Object类型,因为会被自动转为string,因为foo 和 bar 都没有override各自的toString()方法,因为被强制转为string后都是[object object]

    答案

    var foo = new Object();
    var bar = new Object();
    var map = new Object();
    
    map[foo] = "foo";    // --> map["[Object object]"] = "foo";
    map[bar] = "bar";    // --> map["[Object object]"] = "bar";
                         // NOTE: second mapping REPLACES first mapping!
    
    alert(map[foo]);     // --> alert(map["[Object object]"]);
                         // and since map["[Object object]"] = "bar",
                         // this will alert "bar", not "foo"!!
                         //    SURPRISE! ;-)
  • 相关阅读:
    渐变的圆
    画一组同心圆
    画五角星
    照猫画虎求阶乘
    字符串逆序输出
    格式化输出
    计算矩形面积
    字符串反码A
    快乐数字
    Maratona Brasileira de Popcorn( 二分答案+暴力 )
  • 原文地址:https://www.cnblogs.com/Sir-Lin/p/9003992.html
Copyright © 2011-2022 走看看