假设我有一个类,我需要从该类中的私有函数访问一些方法。像这样:
var A = function( )
{
this.a = 0;
var f = function( ){ // Private function
this.a; // Undefined
};
f( );
};
最好的办法是什么?我试图将它传递给函数,但是如果我必须为许多函数执行它,它就不实用了。
var A = function( )
{
this.a = 0;
var f = function( self ){
self.a;
};
f( this );
};
有更好的方法吗?或者设计是否存在根本缺陷,我应该考虑其他替代方案?谢谢!
答案 0 :(得分:1)
为什么是,使用ES6,我们得到箭头功能,自动this
绑定!
var A = function() {
this.a = 0;
var f = () => { // Private function
console.log(this.a); // Woohoo!
};
// If only one statement, can be shortened to
// var f = () => console.log(this.a);
f();
};
对于不幸的人:.bind()
也存在:
var A = function() {
this.a = 0;
var f = function() { // Private function
console.log(this.a); // Woohoo!
}.bind(this); // this inside the function is bound to the passed this.
// If only one statement, can be shortened to
// var f = () => console.log(this.a);
f();
};
答案 1 :(得分:1)
为了避免这个'混淆我见过的常见模式如下:
var A = function( ) {
var self = this;
self.a = 0;
var f = function( ){ // Private function
self.a; // Defined
};
f( );
};