<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    關注技術,關注生活

    任何事情只要開始去做,永遠不會太遲。
    posts - 5, comments - 23, trackbacks - 0, articles - 18
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    今天自己也發現了prototype的一個定位的bug。

    轉自:http://www.cnblogs.com/ashun/archive/2006/12/08/prototype-js-bug.html

    1. String.prototype.camelize&nbsp;&nbsp;&nbsp; BUG

    這個方法用來返回字符串的駱駝寫法。用js 控制元素的 style的時候經常使用
    比如

    var &nbsp;ss = &quot; font-color &quot; &nbsp;&nbsp;
    ss
    = ss.camelize()&nbsp;&nbsp;&nbsp;&nbsp; // &nbsp;fontColor

    通常情況下 camelize 會工作得很好,但是有一個特列,那就是浮動定位&nbsp; float

    var &nbsp;ss = &quot; float &quot; &nbsp;&nbsp;
    obj.style[ss.camelize()]
    = &quot; right &quot; &nbsp; // &nbsp;這將導致一個錯誤。

    顯然,作者沒有考慮 float這種特殊情況,正確的寫法是:&nbsp;

    ie:&nbsp;&nbsp;&nbsp;obj.style.styleFloat = &quot; right &quot;
    ff:&nbsp;&nbsp;&nbsp;obj.style.cssFloat
    = &quot; right &quot;


    2. String.prototype.inspect&nbsp;&nbsp; BUG

    這里&nbsp;inspect&nbsp;方法是有Bug的,&nbsp;作者用replace&nbsp;方法的時候沒有用正則,導致只能替換掉第一個匹配的字符。

    正確的寫法應該這樣
    &nbsp;&nbsp;inspect:&nbsp;function()&nbsp;{
    &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;&quot;'&quot;&nbsp;+&nbsp;this.replace(/\\/g,&nbsp;'\\\\').replace(/&quot;/g,&nbsp;'\\\&quot;')&nbsp;+&nbsp;&quot;'&quot;;
    &nbsp;&nbsp;}

    3. Array.prototype.all&nbsp;&nbsp; BUG
    &nbsp;這個方法檢測是否數組中所有元素都能夠讓迭代函數為真。 如果全部能滿足,則返回true,否則返回false

    var &nbsp;f = function (x){ return &nbsp;x % 2 == 0 }&nbsp;&nbsp; // 檢查一個數是否是偶數
    var &nbsp;arr = [ 2 , 4 , 6 ]
    alert&nbsp;(arr.all(f)
    == true )&nbsp;&nbsp;&nbsp; // 顯示&nbsp;true

    但是當&nbsp; arr為空的時候,仍然返回 true

    var &nbsp;arr = []
    alert(arr.all(f)
    == true )&nbsp;&nbsp;&nbsp; // 顯示true


    4.&nbsp; Array.prototype.any&nbsp;&nbsp;BUG
    同 all方法,對空數組仍然返回true

    5.Array.prototype.detect&nbsp; 也就是 find方法
    這個不是 Bug ,但是不看原代碼很容易讓人誤解,從而出錯。
    這個方法查找第一個能滿足 迭代函數 的元素,最后返回元素的值
    誤解一:

    &nbsp;&nbsp;&nbsp; var &nbsp;f = function (x){ return &nbsp;x % 2 == 0 }&nbsp;&nbsp; // 檢測是否是偶數
    &nbsp;&nbsp;&nbsp; var &nbsp;arr = [ 1 , 3 , 5 , 7 ]&nbsp;&nbsp;&nbsp;&nbsp; // 故意定義一個全為奇數的數組。
    &nbsp;&nbsp;&nbsp;alert(arr.find(f) == false )&nbsp;&nbsp;&nbsp; // false&nbsp;
    &nbsp;&nbsp;&nbsp; // 很多人誤以為&nbsp;find&nbsp;函數在找不到滿足條件的元素的時候會返回&nbsp;false&nbsp;,實際上,它返回的是&nbsp;&quot;undefined&quot;

    誤解二:
    &nbsp;&nbsp; 尋找數組中的數字元素

    &nbsp;&nbsp;&nbsp; var &nbsp;f = function (x){ return &nbsp; ! isNaN(x)&nbsp; &amp;&amp; &nbsp; typeof (x) === &quot; number &quot; }
    &nbsp;&nbsp;&nbsp;
    var &nbsp;arr = [ false , &quot; go_rush &quot; , 0 , &quot; 阿舜 &quot; ]
    &nbsp;&nbsp;&nbsp;
    if &nbsp;(arr.find(f))&nbsp;alert( &quot; 數組中含有數字元素 &quot; )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 事實上&nbsp;這個&nbsp;alert永遠不會執行。

    因為 find方法返回的是第一個符合條件的值。&nbsp; 這里返回:0.&nbsp; 所以.....


    6. 對hash 對象的處理需要格外小心的地方

    var &nbsp;hash = {member: 1 ,test: 2 ,ids: 3 }
    alert(hash.member)
    alert($H(hash).inspect())
    alert($H(hash).toQueryString())
    // hash.member實際是存在的&nbsp;&nbsp;但是.inspect()&nbsp;和&nbsp;.toQueryString()卻當它不存在

    同樣下面這些屬性也會和 prototype.js 相沖突。

    each, all, any, collect, detect, findAll, grep, include, inject, invoke, max, min,
    partition, pluck, reject, sortBy, toArray, zip, inspect, map, find, select, member, entries

    http://community.csdn.net/Expert/topic/4964/4964523.xml?temp=4.314822E-02

    主站蜘蛛池模板: 亚洲爆乳少妇无码激情| 亚洲午夜福利在线视频| 中国精品一级毛片免费播放| 四虎影视永久免费观看地址| 亚洲AV成人片无码网站| 色视频色露露永久免费观看| 亚洲欧好州第一的日产suv| 成人毛片免费观看| 亚洲精品无码专区在线播放| 国产真实伦在线视频免费观看| 欧美日韩亚洲精品| 亚洲av无码专区在线观看素人| 一级毛片免费一级直接观看| 久久亚洲欧洲国产综合| 国产在线观看免费av站| 久久久久亚洲精品影视| 亚洲精品在线免费看| 亚洲另类春色校园小说| 在线免费视频一区| 青青久久精品国产免费看| 亚洲综合av永久无码精品一区二区| 国产成人无码区免费网站| 亚洲高清无在码在线电影不卡| 亚洲第一成年免费网站| 国产精品亚洲精品日韩动图 | www亚洲精品久久久乳| 亚洲国产精品一区二区第四页| 搡女人免费免费视频观看| 亚洲中文久久精品无码1 | 久久精品免费全国观看国产| 亚洲另类无码专区首页| 久久亚洲国产成人精品无码区| 99精品一区二区免费视频| 亚洲人av高清无码| 国产精品亚洲玖玖玖在线观看| 久久免费观看国产精品88av| 中日韩亚洲人成无码网站| 中文字幕精品无码亚洲字| 性xxxxx免费视频播放| 日本激情猛烈在线看免费观看| 亚洲成人在线电影|