我有一个私有函数,我使用了几个公共函数。基本上,公共函数是向对象添加内容的快捷方式。像:
function Basket () {
this.apple = [];
this.orange = [];
}
// Private
var _add = function ( to ) {
this[to].push( new Fruit(to) );
}
// Public
Basket.prototype.addApple = function () {
_add.call( this, 'apple' );
}
Basket.prototype.addOrange = function () {
_add.call( this, 'orange' );
}
我想删除.call
并改用.bind
。但做一些事情:
var _add = function ( to ) {
this[to].push( new Fruit(to) );
}.bind( Basket );
这不起作用,因为它将它绑定到构造函数而不是对象实例。
这甚至可以实现吗?或者应该更好地使用.call
?或者我的设计模式搞砸了!?
答案 0 :(得分:1)
您根本不需要任何绑定。为什么不呢?
function Basket () {
this.apple = [];
this.orange = [];
}
// Private
var _add = function ( basket, to ) {
basket[to].push( new Fruit(to) );
}
// Public
Basket.prototype.addApple = function () {
_add( this, 'apple' );
}
var b = new Basket();
b.addApple();