在dom中使用闭包函数触发器 - 是否存在重大缺点?

时间:2011-04-17 10:05:08

标签: javascript dom javascript-events

关闭方法:

function myObject( div, text ) {

  var input = document.createElement('input');
  input.value = text;
  div.appendChild( input );
  input.addEventListener('change',change,true);
  input.focus();

  function change() {
    if( text.toLowerCase() != input.value.toLowerCase() ) {
      alert( 'you have changed this!' );
    }
    e.preventDefault();
  }
}

静态方法:

var myText = null;

function myObject( div, text ) {
  div.innerHTML += "<input value='"
      + escape(text)
      + "' onchange=\"return myChange()\" />";
  myText = text;
  div.getElementsByTagName('input')[
      div.getElementsByTagName('input').length-1].focus();
}

function myChange( e ) {
  var input = e.target;
  if( myText.toLowerCase() != input.value.toLowerCase() ) {
    alert( 'you have changed this!' );
  }
  return false;
}

在转向闭合方法的过程中。 imho代码明显更好:

  • 无需维护状态空间
  • 在重要的地方可以看到更改功能
  • 代码更小,组织更好
  • 不需要乱扔垃圾或担心报价

似乎闭包函数调用将:

  • 需要自己的开销
  • 以后再招致自己的收集

有没有我错过的红旗?

0 个答案:

没有答案