자바 스크립트에서 객체 프로토 타입에 액세스하는 방법은 무엇입니까?
모든 기사에서 JavaScript는 프로토 타입 기반 언어이며, 이는 모든 객체에 프로토 타입 (또는 더 정확하게는 프로토 타입 체인)이 있음을 의미합니다.
지금까지 다음 코드 스 니펫을 시도했습니다.
var F = function();
F.prototype.member1 = 1;
var object1 = new F();
console.log(object1.member1); // prints 1
의 프로토 타입 객체에 액세스하려면 어떻게 object1
해야합니까? 그렇게 할 수있는 브라우저 중립적 인 방법 이__proto__
있습니까 (재산에 의존하지 않습니까? 이 링크를 보았지만 2010 년 이후로 새로운 개발이있을 수 있습니다) 내가 할 수 없다면 후드 뒤에있는 근거를 공유해 주시겠습니까?
var f = function();
var instance = new f();
instance
function 클래스의 이름을 알고 있다면 다음 과 같이 프로토 타입에 액세스 할 수 있습니다.
var prototype = f.prototype;
prototype.someMember = someValue;
그렇지 않은 경우 :
1)
var prototype = Object.getPrototypeOf(instance);
prototype.someMember = someValue;
2) 또는
var prototype = instance.__proto__;
prototype.someMember = someValue;
3) 또는
var prototype = instance.constructor.prototype; // works only if constructor is properly assigned and not modified
prototype.someMember = someValue;
호환성을 위해 다음 스 니펫을 코드에 삽입 할 수 있습니다 (그리고 항상 Object.getPrototypeOf(instance)
프로토 타입을 반환 하는 데 사용 ).
if(!Object.getPrototypeOf) {
if(({}).__proto__ === Object.prototype && ([]).__proto__ === Array.prototype) {
Object.getPrototypeOf = function getPrototypeOf(object) {
return object.__proto__;
};
} else {
Object.getPrototypeOf = function getPrototypeOf(object) {
// May break if the constructor has been changed or removed
return object.constructor ? object.constructor.prototype : void 0;
};
}
}
최신 정보:
ECMA-262 6th Edition (2015 년 6 월)에 따르면 __proto__
속성은 웹 브라우저의 추가 기능으로 표준화되었습니다. 이제 모든 최신 버전의 상위 브라우저에서 지원합니다. 자세히 알아보기 __proto__
:
EDMA-262 6 판 (2015 년 6 월) :
B.2.2.1 Object.prototype.__proto__
var F = function(){};
var object1 = new F();
alert(object1.constructor === F);
alert(object1.constructor.prototype === F.prototype);
마치
Object.getPrototypeOf(passedObject);
이를 위해 작동하며 최신 브라우저와 호환됩니다.
var F = function();
F.prototype.member1 = 1;
F.prototype.getClass = F;
var object1 = new F();
object1.member1 = 2;
console.log(object1.getClass.prototype.member1); // prints 1
console.log(object1.member1); // prints 2
var F = function();
F.prototype.member1 = 1;
var intance = new F();
console.log(instance['member1']);
참조 URL : https://stackoverflow.com/questions/7662147/how-to-access-object-prototype-in-javascript
'Program Tip' 카테고리의 다른 글
Java에서 MySQL 날짜 및 타임 스탬프 처리 (0) | 2020.12.15 |
---|---|
"관대 한"의 사용은 무엇입니까? (0) | 2020.12.15 |
Fortran이 과학 컴퓨팅에 사용되는 이유는 무엇입니까? (0) | 2020.12.15 |
SQL Server FOR EACH 루프 (0) | 2020.12.15 |
MySQL 오류 1264 : 열의 범위 값을 벗어남 (0) | 2020.12.15 |