addEventListener
function Person() { this.init() } Person.prototype = { constructor: Person, init: function() { document.documentElement.addEventListener('click', this, false) }, handleEvent: function(event) { this.say() }, say: function() { alert('hello world!') } } var person = new Person()
Function.prototype.bind
function Person() { this.init() } Person.prototype = { constructor: Person, init: function() { document.documentElement.addEventListener('click', this.handleEvent.bind(this), false) }, handleEvent: function(event) { console.log(event) console.log(this) } } var person = new Person()
Function.prototype.bind Polyfill
function bind(fn, context) { return function() { return fn.apply(context, arguments) } }