javascript - JS 개인 변수에 액세스할 수 없는 이유는 무엇입니까?

WBOY
풀어 주다: 2016-08-23 09:17:43
원래의
1109명이 탐색했습니다.

<code>function Customer(name) {  
    var risk = 0;  
    this.name = name;  
}  
var customer = new Customer("aa"); 
console.log(customer.name);  // aa
console.log(customer.risk); // undefined  </code>
로그인 후 복사
로그인 후 복사

customer.risk에는 액세스할 수 없지만 customer.name에는 액세스할 수 있는 이유는 무엇입니까?
risk는 누구의 개인 변수입니까? 그렇다면 고객은 왜 자신의 개인 변수에 액세스할 수 없습니까?

답글 내용:

<code>function Customer(name) {  
    var risk = 0;  
    this.name = name;  
}  
var customer = new Customer("aa"); 
console.log(customer.name);  // aa
console.log(customer.risk); // undefined  </code>
로그인 후 복사
로그인 후 복사

customer.risk에는 액세스할 수 없지만 customer.name에는 액세스할 수 있는 이유는 무엇입니까?
risk는 누구의 개인 변수입니까? 그렇다면 고객은 왜 자신의 개인 변수에 액세스할 수 없습니까?

이것은 사유재산이라고 부르는 것이 전혀 아닙니다. 이는 함수 내부에서 선언하는 변수일 뿐입니다. 속성이기 때문에 속성이 비공개인지 여부도 알 수 있습니다. 따라서 속성 자체에는 "그것이 누구에게 속해 있는가?"라는 질문이 있습니다. 생성자를 this.risk=0;으로 변경하면 여기에서 해당 속성의 소유자를 찾을 수 있습니다.

어떻게 그런 대답을 받아들일 수 있나요?
함수 생성자에서 var을 사용하여 변수를 선언합니다. 이 변수는 클로저나 유사한 방법을 통해 노출되지 않으면 외부에서 액세스할 수 없습니다. 게다가 riskcustomer의 전용 변수가 아니고 customer 함수 객체와 관련이 있습니다. Customer
연산자를 사용하면 개체가 반환되고, 호출된 함수 생성자의 new은 반환될 개체를 가리킵니다. 따라서 this을 사용하여 선언한 속성은 반환된 개체에서 액세스할 수 있습니다. this 중. 이는 클로저가 함수이고 여기서는 객체라는 점을 제외하면 클로저와 다소 유사합니다. new

비공개 속성에 액세스할 수 있으면 비공개라고 부를 수 있다고 말씀하셨죠?

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿