<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无码一区二区三区在线观看| 久久精品蜜芽亚洲国产AV| 中文字幕无码免费久久| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 亚洲国产精品无码久久青草| 免费人成动漫在线播放r18 | 亚洲国产成人91精品| 成人免费AA片在线观看| 中中文字幕亚洲无线码| 免费看a级黄色片| 亚洲日韩国产精品第一页一区| 国产人成网在线播放VA免费| 亚洲人精品午夜射精日韩 | 一级毛片免费全部播放| 亚洲中文字幕无码一区| 亚洲av成人片在线观看| 日本阿v免费费视频完整版| 亚洲色欲色欲www| 国产伦精品一区二区三区免费迷 | 久久精品国产亚洲AV| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 国产乱子影视频上线免费观看| 九一在线完整视频免费观看| 亚洲熟妇无码另类久久久| 在线观看的免费网站无遮挡| 亚洲中文字幕无码久久2020| 国产又长又粗又爽免费视频| 最近的2019免费中文字幕| 亚洲天堂一区二区三区| 亚洲?v无码国产在丝袜线观看 | 亚洲精品国产av成拍色拍| 国产自偷亚洲精品页65页| 国产乱子精品免费视观看片| 视频一区二区三区免费观看| 亚洲AV无码精品无码麻豆| 我要看WWW免费看插插视频| 精品一区二区三区免费观看| 亚洲嫩草影院在线观看| 亚洲一区二区三区乱码A| 久草视频免费在线观看|