자바 스크립트 개체 속성을 읽기 전용으로 설정할 수 있습니까? 수정할 수없는 속성을 설정하고 싶습니다 ...읽기 전용 속성
Q
읽기 전용 속성
4
A
답변
7
가능하지만 비쌉니다. 당신은 진정으로 개인 멤버 변수를 가진 후 접근 기능을 제공하여 작업을 수행 할 수 있습니다
접근 기능이 VAR를 통해 폐쇄이기 때문에 작동var NiftyThing = function() {
var trulyPrivateVariable;
trulyPrivateVariable = 5; // For instance
this.accessorFunction = function() {
return trulyPrivateVariable;
}
};
. 비용은 각 인스턴스에 접근 자 함수의 자체 복사본이 있음을 의미합니다.
편집 : 사용법 :
var n = new NiftyThing();
alert(n.trulyPrivateVariable);
// Alerts "undefined"
alert(n.accessorFunction());
// Alerts "5"
이 이상 Private Member Variables in JavaScript를 참조하십시오.
0
나는 대답에 동의하고주의하는 것이 싶습니다 bob.js 지원 등의 기본 메커니즘 같은 일부 자바 스크립트 프레임 워크 :
var obj = { };
//declare read-only property.
bob.prop.namedProp(obj, 'name', 'Bob', true);
//declare read-write property.
bob.prop.namedProp(obj, 'age', 1);
//get values of properties.
console.log(bob.string.formatString('{0} is {1} years old.', obj.get_name(), obj.get_age()));
//set value of read-write property.
obj.set_age(2);
console.log(bob.string.formatString('Now {0} is {1} years old.', obj.get_name(), obj.get_age()));
//cannot set read-only property of obj. Next line would throw an error.
// obj.set_name('Rob');
//Output:
//========
// Bob is 1 years old.
// Now Bob is 2 years old.
그러나, 당신은 특정 get 접근과 재산에 대한 특별한 요구 사항이있는 경우 구현 요구 사항을 파악한 다음 필요에 따라 값을 가져 오는 함수를 더 잘 정의하십시오.
- 텡 기즈
0
당신은 Object.defineProperty (사용하고, 이런 식으로 뭔가를 구현할 수 있습니다) :
function blockProperties(object, properties) {
"use strict";
// If not properties passed, then use the already defined ones:
if (typeof properties === "undefined") {
properties = object;
}
// Loop trough the properties
for (var property in properties) {
if (properties.hasOwnProperty(property)) {
// Make property read-only
Object.defineProperty(object, property, {
value: properties[property],
writable: false,
configurable: false,
enumerable: false
});
}
}
return object;
}
var someObject = {};
blockProperties(someObject, {
propertie1: "someValue",
propertie2: "someOtherValue"
});
someObject.propertie1 = "this doesn't change anything";
console.log(someObject.propertie1); // Output: "someValue"
// Because "window" is also an object, you can set an only-read global var:
blockProperties(window, {
onlyReadVariable: "onlyReadValue"
});
관련 문제
- 1. 읽기 전용 속성 초기화
- 2. ScriptControlDescriptor.AddProperty 및 읽기 전용 속성
- 3. Objective-C의 읽기 전용 속성?
- 4. EF 4.1의 읽기 전용 속성
- 5. VB.net 자동 속성 - 읽기 전용?
- 6. 올바른 읽기 전용 속성 작성 방법은 무엇입니까?
- 7. Moq Linq-to-SQL 읽기 전용 속성
- 8. XML 직렬화로 읽기 전용 속성 직렬화
- 9. property.fget이 읽기 전용 속성 인 이유는 무엇입니까?
- 10. Actionscript 3의 읽기 전용 속성 만들기
- 11. C#에서 속성 접근 자 "읽기 전용"
- 12. WCF : 설정없이 읽기 전용 DataMember 속성 노출?
- 13. 내부적으로 수정할 수있는 읽기 전용 속성 노출
- 14. 읽기 전용 속성 봄의보기 모델 MVC보기
- 15. 문자열의 읽기 전용 목록
- 16. 읽기 전용 연결
- 17. 읽기 전용 폴더 시각화
- 18. DataGridView 읽기 전용 셀
- 19. 델파이 ClientDataset의 읽기 전용
- 20. 파일 열기 읽기 전용
- 21. 읽기 전용 콘센트입니까?
- 22. 읽기 전용 C#을
- 23. 같은 읽기 전용
- 24. 아이폰의 읽기 전용 항목
- 25. 읽기 전용 텍스트 상자
- 26. NSMutableArray를 읽기 전용
- 27. 수정 수출은 읽기 전용
- 28. XAML 읽기 전용 콤보
- 29. 열린 파일 읽기 전용
- 30. 용도 @ 동적, 읽기 전용,//
, 비록 정해진 사용자에 의해 덮어 쓸 수 accessorFunction을 확인합니다. truelyPrivateVariable에는 영향을주지 않지만 accessorFunction을 호출하는 모든 항목에 영향을줍니다. – cobbal