Código:
mifuncion ={
algo: function(){
this.nombre = 'carlos';
},
name: function(){
alert('tu'+ this.algo)
}.bind(this)
}
del primer ejemplo, el
this de la linea #20 hace referencia al objeto global, o sea window. esto se debe al momento en que
this es invocado. fijate que
this no es parte del cuerpo de una función o método. en un objeto literal no se puede hacer referencia a si mismo mientras se esta creando el objeto. por eso cuando invocas
name, this.algo no hace referencia al objeto
mifuncion, sino al objeto que hayas pasado en
bind, en este caso el objeto global. por tanto,
mifuncion.name pasa a tener una función distinta a la que realmente se pretendia.
en el segundo ejemplo lo que cambia es que estas invocando el método
bind luego que el objeto se crea y dentro de una función. en este caso, el
this de la linea #22 -al estar dentro de una función- hace referencia al objeto
mifuncion.
por otro lado no le veo sentido enlazar un metodo al mismo objeto que le contiene cuando deberia ser un objeto distinto.