new Function() に this 値を束縛する
HTML
<ul>
<li><a href="https://teratail.com/questions/24798">javascriptのプログラム構造について(24798)|teratail</a></li>
</ul>
JavaScript
'use strict';
function SampleClassA () { ; }
SampleClassA.prototype = {
setDefaultData: function setDefaultData () {
this.data = {
pointA: 10,
pointB: 10,
pointC: 10,
pointD: 10
};
},
doDisplay: function doDisplay (/* [window] */) {
if (arguments.length > 0) {
var window = arguments[0];
console.log(window.innerWidth, window.innerHeight);
}
console.log(this.data);
},
initialEvent: function initialEvent () {
this.resizeEvent = Function('thisArg, _resizeEvent', 'return function resizeEvent (event) { _resizeEvent.call(thisArg, event); };')(this, this.resizeEvent);
this.setDefaultData();
this.doDisplay();
},
updateResizeData: function updateResizeData () {
var data = this.data;
++data.pointA;
++data.pointC;
},
resizeEvent: function resizeEvent (event) {
this.updateResizeData();
this.doDisplay(event.target);
}
};
var sampleA1 = new SampleClassA();
sampleA1.initialEvent();
jQuery(window).on('resize', sampleA1.resizeEvent);