2014-02-06 3 views
0

나는 여러 가지 공용 함수와 함께 사용하는 개인 함수가 있습니다. 기본적으로 public 함수는 객체에 무언가를 추가하는 단축키입니다. 마찬가지로 :. private 함수와 생성자에서 .bind 사용

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을 더 잘 사용해야합니까? 아니면 내 디자인 패턴이 엉망이냐고?

답변

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(); 
+0

예, 개인 기능을 개체에 추가하면 가능합니다. 하지만 난 이걸하고 싶지 않아. :) –

+0

@distractedBySquirrels 아, 이제 네 질문이있어! –

+0

@distractedBySquirrels 내가 편집했습니다. 너가 원하는게 그거야 ? –

관련 문제