原型函数调用返回未定义



我目前正在研究JavaScript标准编码模式。console.dir(dropdownAC.appendImages())为什么返回未定义,有人?

在此代码中,我使用的是Dev-Bridge AutoComplete.js在有图片框建议的情况下具有自动完成的小部件,例如Homedepot Autococtlete。如果我做错了,请随时建议我需要使用的正确的模块化格式。目前,图像将在本地存储中。

(function ($) {
  "use strict";
  var DropdownAC = function() {
    return this
  }
  DropdownAC.DEFAULTS = {
    products : [
      { value : 'Ash Bucket', data: 'AB', imagePath : 'img/ash_bucket/' },
      { value : 'Drill', data: 'DR', imagePath : 'img/drill/' },
      { value : 'Lights', data: 'LT', imagePath : 'img/light/' },
      { value : 'Shelve', data: 'SV', imagePath : 'img/shelve/' },
      { value : 'Maple Wood', data: 'MW', imagePath : 'img/maple' }
    ]
  }
  DropdownAC.prototype.loadImages = function(key_text){
    return key_text
  }
  DropdownAC.prototype.appendImages = function () {
    var top_result = $('.autocomplete-suggestion:first').text()
    var ac_images = dropdownAC.loadImages(top_result) 
    console.log(ac_images)
  }   
  DropdownAC.prototype.showPictureBox = function(){
    //===============================
    // Create pictureBox
    //===============================
    //--------------HERE------------------//
    console.dir( dropdownAC.appendImages() ) 
  }
  //==================================
  //   VENDOR:autocomplete.js       
  //==================================       
  $('#autocomplete').autocomplete({
    lookup  : DropdownAC.DEFAULTS.products,
    onSelect : function (suggestion){
      alert('What will i do with this?' + suggestion.value + ', ' + suggestion.data);
    }
  })    
  //==================================
  //   Extension-autocomplte tweak    
  //==================================
  $('#autocomplete').keyup(function(){
    var suggestions_visible = $('.autocomplete-suggestions').is(":visible")
    var suggestions_childLength = $('.autocomplete-suggestions').children().length
    if ( suggestions_visible && suggestions_childLength > 0 ){
      dropdownAC.showPictureBox()
    }
    else {
      $('.suggestions_wrapper').remove()
    }
  })
  window.dropdownAC = new DropdownAC();
  $(document)
    .on('load', dropdownAC);
})(window.jQuery);

因为 DropdownAC.prototype.appendImages = function () {不返回任何东西!

尝试更改附录功能:

DropdownAC.prototype.appendImages = function () {
    return 'hello, i'm here!';
}

为什么console.dir(dropdownac.appendimages())返回未定义,某人?

内部函数您连接到原型使用this代替dropdownAC,然后返回类似的东西

...
var ac_images = this.loadImages(top_result)
return ac_images;
...

您正在使用模块化模式,这很好,只需定义所有依赖项。

(function($, window, document) {
    ...
})(window.jQuery, window, window.document);

更清楚,哪些代码需要和有助于缩小。

最新更新