어제의 "권한이있는 JavaScript Guide"연구 노트 10 : ECMAScript 5 강화 된 객체 모델에서 코드를 디버깅 할 때 이상한 현상이 발생했습니다. 이제 아래에 소스 코드를 게시하십시오.
코드 사본은 다음과 같습니다.
<script type = "text/javaScript">
기능인 () {}
var per = 새로운 사람;
Object.defineProperties (per,
{
"별명":
{
가치 : "Tom",
쓰기 가능 : 사실
},
"나이":
{
가치 : 20,
구성 가능 : False,
쓰기 가능 : 거짓
}
});
var o = Object.GetOwnPropertyDescriptor (per, "nickname");
경고 (json.stringify (o));
</스크립트>
Google에서 실행 결과 :
http://img.blog.csdn.net/20140529073008296?watermark/2/text/ahr0cdovl2jsb2cuy3nkbi5uzxqv dtaxmta0mzg0mw ==/font/5a6l5l2t/fontsize/400/fill/i0jbqkfcma ==/dissolve/70/gravity/center
이 결과는 정확하지만 다른 장소로 변경하면 결과가 다릅니다.
코드 사본은 다음과 같습니다.
<script type = "text/javaScript">
기능인 () {}
var per = 새로운 사람;
Object.defineProperties (per,
{
"별명":
{
가치 : "Tom",
쓰기 가능 : 사실
},
"나이":
{
가치 : 20,
구성 가능 : False,
쓰기 가능 : 거짓
}
});
var name = object.getOwnPropertyDescriptor (per, "nickname");
경고 (json.stringify (name));
</스크립트>
실행 결과 :
이게 왜? 간단한 변수 이름을 변경했습니다
문제는 이름이 있지만 이해하지 못합니다. 온라인으로 정보를 검색했지만 결과는 없었습니다. 나중에, 나는 선임 형제에게 물어보고 포럼에 문제를 넣으 러 갔다 : http://bbs.csdn.net/topics/390799744?page=1#post-397474060,
이름은 창 속성으로 창의 이름을 설정하거나 반환하는 데 사용되며 데이터 유형은 문자열입니다. 첫 번째 문장은 function person () {}이므로 끝났으므로 다음 코드는 전역 컨텍스트에있을 수 있습니다. 위의 var 이름 출력이지만 실제로는 Window.name 출력 일 수 있습니다. 출력 [Object Object]의 경우이 유형은 이름 값의 유형입니다.