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! ;-)
  • 相关阅读:
    网络流 KM dinic
    网络流 增广路 回退
    树链剖分
    线段树区间更新 lazy
    全排列
    各种蕴含算法思想的DP
    各种蕴含算法思想的DP
    Strassen矩阵乘法之思考
    [0,x)的随机数
    hdu1331 按着题目的公式直接写
  • 原文地址:https://www.cnblogs.com/Sir-Lin/p/9003992.html
Copyright © 2011-2022 走看看