对象/功能混合

时间:2014-09-23 15:22:46

标签: javascript function object

我已经摆弄了许多片段,但这是我到目前为止最接近的片段:

function Q(a){
  if(typeof a=="string"){
    var b=a[0],c=a.substring(1);
    return b=="#"?document.getElementById(c):b=="."?document.getElementsByClassName(c):document.getElementsByTagName(a);
  }
}

Q.setClass=function(b){a.className=b}

我希望能够Q("#ID").setClass("testClass");

我该怎么做?

1 个答案:

答案 0 :(得分:1)

你的问题中没有对象 - 功能混合。你想要一个Q(构造函数/工厂)函数,它产生一个对象,它有一个setClass(方法)函数

例如可以这样做:

function Q(el) {
  if (typeof el=="string") {
    var b = el.charAt(0),
        c = el.substring(1);
    el = b=="#"
         ? [document.getElementById(c)]
         : b=="."
           ? document.getElementsByClassName(c)
           : document.getElementsByTagName(a);
  }
  return {
    setClass: function(cls) {
      for (var i=0; i<el.length; i++)
        el[i].className = cls;
    }
  };
}