私が作成している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();
});