插件代码问题



 var oSwitch=function() {
    this.dom=null;
    this.settings = {
        isTop: true, //是否开通头部栏
        topNum: 4, //头部栏显示个数默认4个
    };
    return new oSwitch.prototype.init(el, option);
};

oSwitch.prototype.init.prototype = oSwitch.prototype;

oSwitch.prototype = {    
    constructor: oSwitch,
    init: function(el, option) {
        alert(this);
        this.dom = typeof el === "string" ? document.querySelector(el) || el;
        for (var attr in option) {
            this.settings[attr] = option[attr];
        }
    },
};

window.onload = function() {
    //这个报oSwitch is not defined是哪里出错了吗??
    var myScroll = oSwitch("#wrapper", {});
};

<body>
        <article id="wrapper">
            <header></header>
            <section></section>
            <footer></footer>
        </article>
</body>

JavaScript javascript面向对象

猫耳女仆眼睛娘 9 years, 3 months ago

代码是不是上传错了,上面的代码不应该是报 oSwitch is not defined 错误, 应该是 el is not defined 才对吧? 代码中有好几处错误,我在你的基础上做了一些调整:


 var oSwitch = function(el, option) {
  return new oSwitch.prototype.init(el, option);
};

oSwitch.prototype = {
  constructor: oSwitch,
  init: function(el, option) {
    // alert(this);
    this.dom = null;
    this.settings = {
      isTop: true, //是否开通头部栏
      topNum: 4, //头部栏显示个数默认4个
    };
    this.dom = typeof el === "string" ? document.querySelector(el) : el;
    this.settings = $.extend(this.settings, option); // 扩展默认值
  },
};

oSwitch.prototype.init.prototype = oSwitch.prototype;

window.onload = function() {
  var myScroll = oSwitch("#wrapper", {});
  console.log(myScroll);
  // 输出:
  // {
  //   "dom": article#wrapper,
  //   "settings": {
  //     "isTop": true,
  //     "topNum": 4
  //   }
  // }
};

海灵顿的忧郁 answered 9 years, 3 months ago

Your Answer