gpt4 book ai didi

javascript - 创建 jquery 插件的更好方法

转载 作者:行者123 更新时间:2023-11-30 06:26:20 25 4
gpt4 key购买 nike

<分区>

我正在尝试使用以下两种方式来创建插件。现在我需要知道哪种方式更好,更受青睐。

第一种方式

;(function ($) {
var Movies = {
init: function (options, el) {
this.el = el;
this.$el = $(el);
this.url = 'http://example.com/movies.json';

this.search = (typeof options === 'string') ? options : options.search;
this.options = $.extend({}, $.fn.queryMovies.options, options);

this.refresh();
},

refresh: function () {
var self = this;
this.fetch().done(function (results) {
console.log(results.movies);
});
},

fetch: function () {
return $.ajax({
url: this.url,
data: {
q: this.search,
apikey: 'thisiskey'
},
dataType: 'jsonp'
});
}
};

$.fn.queryMovies = function (options) {
return this.each(function () {
var movies = Object.create(Movies);
movies.init(options, this);
});
};

$.fn.queryMovies.options = {

};
})(jQuery);

第二种方式

;(function ($) {
var Movies = function (options, el) {
this.el = el;
this.$el = $(el);
this.url = 'http://example.com/movies.json';

this.search = (typeof options === 'string') ? options : options.search;
this.options = $.extend({}, $.fn.queryMovies.options, options);

this.refresh();
};

Movies.prototype = function () {

var refresh = function () {
var self = this;
fetch(this).done(function (results) {
console.log(results.movies);
});
},

fetch = function (self) {
return $.ajax({
url: self.url,
data: {
q: self.search,
apikey: 'thisiskey'
},
dataType: 'jsonp'
});
};

return {
refresh: refresh
};
}();

$.fn.queryMovies = function (options) {
return this.each(function () {
new Movies(options, this);
});
};

$.fn.queryMovies.options = {

};
})(jQuery);

第二种方式是原型(prototype)继承。我知道这种方式更适合内存管理。其次,它有一种拥有公共(public)和私有(private)成员功能的方式,例如在上面的代码中,refresh 方法是公共(public)的,因为它在返回对象字面量中有别名,而 fetch 是私有(private)成员函数。

关于第一个,我真的不知道那是否比第二个好。很高兴知道,以便从现在开始我将遵循该方法。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com