나는 생성자의 프로토 타입 기능을 가지고있다. 그리고 저의 질문이 가리키는 곳입니다. 다음과 같이자바 스크립트 가장 좋은 방법은 프로토 타입
function Animal(name) {
this.name = name
}
Animal.prototype.generateToys = function(numberOfToys) {
if(numberOfToys == 1) {
this.createToys();
}
else {
this.createToys();
}
function createToys() {
...
...
...
}
}
을 또는 당신은 방법 (프로토 타입)로 만들 것입니다 : 그렇게 같은 방법 generateToys
내부 createToys
을 만들기 위해 더 나은, generateToys
는 createToys()
를 호출 할 수있는 유일한 방법이 될 것입니다 것입니다 가정
Animal.prototype.createToys = function() {
...
...
...
}
왜 더 낫겠습니까? :)
에 달려 있습니다. 객체의 모든 인스턴스에서 createToys에 직접 액세스 할 수있게 하시겠습니까? 또는 generateToys를 통과하도록 하시겠습니까? 당신은 내부 generateToys를 가지고 있기 때문에, 나는 당신이 항상 generateToys를 통과하기를 원한다고 생각하고있다. 그래서 함수는 private이어야한다. – yBrodsky
가장 좋은 해결책은 작동하는 것이다. 첫 번째 제안은'createToys'를 인스턴스에 대한 속성으로 만들지 않으므로'this.createToys() '호출은 실패합니다 (즉, 작동하지 않습니다). 그러나 그것을 고치더라도 왜'generateToys'가 호출 될 때마다'createToys'를 다시 만들어야합니까? 그건 불필요한 것처럼 보입니다 (적어도 당신의 모범을 보시면). 함수를 한 번 정의하십시오. 당신이 그것을하는 곳에 ('prototype', "클래스"밖의 함수) 정말로 중요하지 않습니다. –
Douglas Crockford, Function The Ultimate (https://www.youtube.com/watch?v=ya4UHuXNygM)의 강연을 보도록 조언 드리지만, 객체 생성 작업을위한 다양한 방법을 제공합니까? – Booster2ooo