私が作成しているJavaScriptクラスがあります。このクラスには、プライベートおよびパブリックの関数/プロパティがあります。プライベートとパブリックについての私の理解は、それthisがパブリックでありvar、その機能とそのメンバーにとってプライベートであるということでした。ただし、ローカル関数内でbuildFramework()を呼び出すとvar settings.currentView、エラーが発生します。
settings.currentView定義されていません
this私の質問は、関数とそのメンバーのスコープとvarグローバルスコープの違いは何ですか?
namespace('example');
example.InstagramViewer = function (options) {
// this works when called within buildFramework()
this.settings = $.extend({
currentView: 'grid'
}, options);
// this doesn't work when called within buildFramework()
var settings = $.extend({
currentView: 'grid'
}, options);
var viewer;
this.init = function () {
buildFramework();
};
var buildFramework = function() {
viewer = $(viewerWrapper).append('<div id="instagramViewer" class="' + settings.currentView + '"></div>'); // this doesn't work
viewer = $(viewerWrapper).append('<div id="instagramViewer" class="' + this.settings.currentView + '"></div>'); // this does work
};
}
と、そう呼んで…
$(function () {
var viewer = new connectionsAcademy.publicWebsite.web.js.teenWebsite.InstagramViewer();
viewer.init();
});