javascript - How can I make sure 'this' refers to the object literal within the object literal? -


here's simple fiddle.

i want make sure this inside obj obj can call a b. i'm using obj in different function, , when put breakpoint inside b, find this window, not obj.

var obj = {     a: function() { return 2 },     b: function() { return 5+ this.a() }, }  $('#hey').text(obj.b()); 

obj defined in file used many other classes, wouldn't make sense define either of methods @ site of using obj.

judging @kamil's answer, looks may need pass in a parameter b. in:

var user = obj.b(obj.a);  var obj = {   a: function() { return 2 },   b: function(func) { return 5 + func() }, }       

edit following works, it's messy. there more elegant way?

i ended changing

startingsma = this.simple_moving_average(startingsma, period, accessor) 

to following:

startingsma = (function(startingsma, period, accessor) {                  return this.simple_moving_average(startingsma, period, accessor)                                 }).apply(statistics, [startingsma, period, accessor]); 

i don't know why hasn't been suggested yet - use bind:

var obj = {}; obj.b = (function () {     // "this" "obj" }).bind(obj); 

reference:


Comments

Popular posts from this blog

c# - DetailsView in ASP.Net - How to add another column on the side/add a control in each row? -

javascript - firefox memory leak -

Trying to import CSV file to a SQL Server database using asp.net and c# - can't find what I'm missing -