javascript对象文字模式构造函数错误

javascript对象文字模式构造函数错误,javascript,jquery,Javascript,Jquery,我试图使用对象文字模式组织代码,但出现了一个错误: 未捕获引用错误:未定义backToTop 你知道为什么吗 代码如下: (function($){ var Mk = { config: {}, init: function(config) { backToTop(); wow(); progressBarAnimation(); slabText(); }, backToTop: function()

我试图使用对象文字模式组织代码,但出现了一个错误: 未捕获引用错误:未定义backToTop

你知道为什么吗

代码如下:

(function($){

  var Mk = {

    config: {},

    init: function(config) {
      backToTop();
      wow();
      progressBarAnimation();
      slabText();
    },

    backToTop: function() {
      $('body').append('<div id="toTop" class="btn btn-success"><span class="glyphicon glyphicon-chevron-up"></span> Back to Top</div>');
      $(window).scroll(function () {
        if ($(this).scrollTop() != 0) {
          $('#toTop').fadeIn();
        } else {
          $('#toTop').fadeOut();
        }
      }); 
      $('#toTop').click(function(){
        $("html, body").animate({ scrollTop: 0 }, 600);
        return false;
      });
    },

    wow: function() {
      var wow = new WOW({
        boxClass:     'wow',      
        animateClass: 'animated', 
        offset:       0,          
        mobile:       true,       
        live:         true        
      });
      wow.init(); 
    },

    progressBarAnimation: function() {
      $.each($('div.progress-bar'),function(){
        $(this).css('width', $(this).attr('aria-valuetransitiongoal')+'%');
      });
    },

    slabText:function() {
      $("h1.mklife").slabText({
        "viewportBreakpoint":400
      });
    },

    last:''

  };

  $(document).ready(Mk.init());
  window.Mk = Mk;

})(jQuery)
(函数($){
var Mk={
配置:{},
初始化:函数(配置){
backToTop();
哇();
进展性炎症();
slabText();
},
backToTop:function(){
$('body')。追加('backtotop');
$(窗口)。滚动(函数(){
如果($(this).scrollTop()!=0){
$('#toTop').fadeIn();
}否则{
$('#toTop').fadeOut();
}
}); 
$('#toTop')。单击(函数(){
$(“html,body”).animate({scrollTop:0},600);
返回false;
});
},
哇:函数(){
var wow=新wow({
boxClass:‘哇’,
animateClass:“已设置动画”,
偏移量:0,
手机:是的,
现场直播:真的
});
wow.init();
},
progressBarAnimation:函数(){
$.each($('div.progress-bar'),函数(){
$(this.css('width',$(this.attr('aria-valuetransitingoal')+'%”);
});
},
slabText:function(){
$($h1.mklife”).slabText({
“视口断点”:400
});
},
最后:''
};
$(document).ready(Mk.init());
window.Mk=Mk;
})(jQuery)
  • 编辑:我错过了documentready:$(document.ready(Mk.init())上的实际函数调用括号
函数
backToTop
wow
progressBarAnimation
slabText
是Mk对象的方法,访问它们时引用Mk对象

init: function(config) {
  Mk.backToTop();
  Mk.wow();
  Mk.progressBarAnimation();
  Mk.slabText();
},
或者,由于init也是同一对象的一个方法,因此您可以使用
this
关键字访问该函数

init: function(config) {
  this.backToTop();
  this.wow();
  this.progressBarAnimation();
  this.slabText();
},

函数
backToTop
wow
progressBarAnimation
slabText
是Mk对象的方法,访问它们时引用Mk对象

init: function(config) {
  Mk.backToTop();
  Mk.wow();
  Mk.progressBarAnimation();
  Mk.slabText();
},
或者,由于init也是同一对象的一个方法,因此您可以使用
this
关键字访问该函数

init: function(config) {
  this.backToTop();
  this.wow();
  this.progressBarAnimation();
  this.slabText();
},

backToTop不是全局变量,因此需要使用对象表示法(this.backToTop)调用它


上面的解决方案会起作用,但我建议使用显示模块设计模式的更简洁的方法,请查看此链接(以及页面底部的参考资料)了解如何实现它

backToTop不是一个全局变量,因此需要使用对象表示法调用它(this.backToTop)


上面的解决方案会起作用,但我建议使用显示模块设计模式的更简洁的方法,请查看此链接(以及页面底部的参考资料)了解如何实现它

您在同一对象中引用了一个函数,因此请使用此.backToTop();相反,您引用的是同一对象中的函数,所以请使用以下命令:backToTop();相反