第一種方式,直接將自訂事件存放在__onfireEvents中
<code>var __onfireEvents = {}; function _bind(eventName, callback, is_one, context) { if (typeof eventName !== string_str || typeof callback !== function_str) { throw new Error('args: '+string_str+', '+function_str+''); } if (! hasOwnKey(__onfireEvents, eventName)) { __onfireEvents[eventName] = {}; } __onfireEvents[eventName][++__cnt] = [callback, is_one, context]; return [eventName, __cnt]; } function on(eventName, callback, context) { return _bind(eventName, callback, 0, context); } </code>
第二種方式,同樣是將自訂事件儲存起來,不同之處是綁定在元素上,是否有必要?這裡有什麼優勢嗎?
<code>$customSubMap = {}; subscribeEvent = function ( $collection, event_name, fn ) { $collection.on( event_name, fn ); if ( ! $customSubMap[ event_name ] ) { $customSubMap[ event_name ] = $collection; } else { $customSubMap[ event_name ] = $customSubMap[ event_name ].add( $collection ); } };</code>
第一種方式,直接將自訂事件存放在__onfireEvents中
<code>var __onfireEvents = {}; function _bind(eventName, callback, is_one, context) { if (typeof eventName !== string_str || typeof callback !== function_str) { throw new Error('args: '+string_str+', '+function_str+''); } if (! hasOwnKey(__onfireEvents, eventName)) { __onfireEvents[eventName] = {}; } __onfireEvents[eventName][++__cnt] = [callback, is_one, context]; return [eventName, __cnt]; } function on(eventName, callback, context) { return _bind(eventName, callback, 0, context); } </code>
第二種方式,同樣是將自訂事件儲存起來,不同之處是綁定在元素上,是否有必要?這裡有什麼優勢嗎?
<code>$customSubMap = {}; subscribeEvent = function ( $collection, event_name, fn ) { $collection.on( event_name, fn ); if ( ! $customSubMap[ event_name ] ) { $customSubMap[ event_name ] = $collection; } else { $customSubMap[ event_name ] = $customSubMap[ event_name ].add( $collection ); } };</code>
看起來第二種可讀性好一點。
其實我覺得兩者本質上沒差別,就像產品與分類的關係,可以說 {Product1:[Category1, Category2]}也可以說{Category1: [Product1, Product2]}
個人感覺第二個