2016-09-10 1 views
1
  1. 내 기능을 어떻게 작동시킬 수 있습니까? 나는 연회를 알 수 없다?

감사합니다.자바 스크립트 프로토 타입 및 개인 변수

  1. 목록 항목
  2. 목록 항목
  3. 목록 항목 그래서 당신은 프로토 타입을 사용할 수 있습니다 banque에 대한 게터를 설정 당신이 할 수있는

function Personne(nom){ 
 
    this.nom = nom; 
 
    var banque = 1500; 
 
    this.add = function(number){ 
 
    banque = banque + number 
 
    } 
 
    this.getCpte = function() { 
 
    return banque 
 
    } 
 
} 
 

 
Personne.prototype.min = function(number){ 
 
    banque = banque - number 
 
} 
 

 
var me = new Personne('albert') 
 

 

 

 
console.log(me) 
 
me.add(500) 
 
me.min(500) // got banque is undefined 
 
console.log(me.getCpte())

+1

는'banque'는'Personne' 기능의 외부에 존재하지 않습니다 ... – Li357

+0

어떻게이 존재하고 개인 VAR로 유지 할 수 있습니다 프로토 타입 방법을 사용하고 있습니까? –

답변

0

. getCpte으로 이미 완료 한 것으로 보입니다. 이 함수를 사용하여 banque의 값을 얻은 다음 프로토 타입 함수 할당에 사용합니다.

function Personne(nom){ 
 
    this.nom = nom; 
 
    var banque = 1500; 
 
    this.add = function(number){ 
 
    banque = banque + number 
 
    } 
 
    this.getCpte = function() { //banque getter 
 
    return banque 
 
    } 
 
    this.setCpte = function(value) { //banque setter 
 
    banque = value; 
 
    } 
 
} 
 

 
Personne.prototype.min = function(number){ 
 
    this.setCpte(this.getCpte() - number) //set to banque - number 
 
} 
 

 
var me = new Personne('albert') 
 

 
console.log(me) 
 
me.add(500) 
 
me.min(500) 
 
console.log(me.getCpte())
: 당신이 Personne 함수 외부 값을 수정하려는 경우도 banque에 대한 세터가 필요합니다. (이 banque은 본질적으로 공개됩니다이를 방지하기 위해, 가능하다면 생성자에 min 기능을 설정)

란이 추가하면 banque위한 세터 setCpte 인 함수이다. 이 방법을 사용하면 을 사용할 수 있습니다. 여기서 값은 banque으로 설정되는 값입니다. banque - number을 수행 했으므로 getter를 사용하여 ReferenceError를 제거하고 숫자를 뺍니다.

+1

이것은 실제로 문제를 해결하지 못합니다. 'banque'는 "private"일 수 있습니다. 그러나 직접적으로 값을 설정할 수 있습니다. 그래서 어떤 방식 으로든 비공개입니까? 'min'이 뺄 수있는 것과 똑같이 할 수 있다면 원본 코드를'추가 할 수 있습니다. 그러나 값을 직접 설정할 수는 없습니다. 변수가 갖는 "개인 정보"의 범위입니다. 이제 변수가있는 것처럼 보입니다. 노출되었습니다 ... 이제는 setCpte 함수에 로직을 넣어 설정 값을 살균 할 수 있다고 생각합니다.하지만 이것에 대한 내용은 –

+0

@JaromandaX입니다.주의해야 할 중요한주의 사항이지만 확실하지 않습니다. OP가 프로토 타입으로 설정하려고 시도하는 다른 방법이 있습니다. 필자는'Personne' 함수에서 설정하는 것을 권장합니다. – Li357

1

banquePersonne 안에있는 로컬 변수이며 외부에서 액세스 할 수 없습니다. min을 생성자 안에 넣어 다른 것과 마찬가지로 권한있는 메소드로 만들거나 banque.nom과 같은 속성으로 만듭니다.

또는 단지는 add 방법을 통해 모든 것을 수행

Personne.prototype.min = function(number) { 
    this.add(-number); 
};