스크립트의 사전 객체에 대해서는 사실 MS가 처음에는 Python과 같은 동적 스크립팅 언어를 빌려 클라이언트용으로 개발했다고 생각합니다. 이에 대해서는 wrox의 ASP Programmer's Reference Manual 137페이지를 참고하시면 됩니다. 세션 수준의 사전 개체는 시스템 성능을 저하시키는 반면, 응용 프로그램 수준의 사전 개체를 저장하면 웹 서버가 충돌하게 됩니다. 이에 대해서는 더 이상 언급하지 않겠습니다.
이제 사전 개체가 단일 페이지에 있을 때 어떤 디자인 결함이 있는지 고려해야 합니다.
이것을 시도해 볼 수 있습니다
rs=server.createobject(adodb.recordset) 설정
sql=테이블에서 * 선택
rs.open SQL,콘,1,3
ttt=server.createobject(scripting.dictionary) 설정
ttt.xxx,rs(필드) 추가
rs=아무것도 설정하지 않음
liu=ttt(xxx) '이렇게 하면 무엇을 찾을 수 있나요? ASP 페이지에서 사고가 발생했음을 알려줍니다! ! ! 이것은 매우 놀라운 일입니다. 사고란 무엇입니까? 라고 말하기는 어렵지만, 나중에 반복적인 테스트를 거쳐 rs(field)의 값을 딕셔너리 객체에 직접 지정할 수 없기 때문이라는 것을 알게 되었습니다. 이 경우 내가 방금 작성한 것은 의심할 여지 없이 재앙입니다. 해결책은 이 rs(필드)를 변수에 넣는 것입니다. 그런데 사전 객체가 아무것도 변경되지 않은 객체를 저장할 수는 없나요? 이것은 큰 질문이므로 이 프로그램을 다시 작성했습니다. try.htm으로 저장하면 효과를 볼 수 있습니다.
<스크립트 언어='vbscript'>
ttt=createobject(scripting.dictionary) 설정
ttt.추가 liu,uuu
ddd=createobject(scripting.dictionary) 설정
ddd.ppp 추가,ttt
setttt=아무것도 없음
bbb=ddd(ppp)(리우)
경고(bbb)
</script>
결과는 무엇입니까? 경고 uuu 설명에 문제가 없음을 알 수 있습니다. 이는 사전 개체가 실제로 다른 개체를 대체한다는 의미입니다.
전체 사전 개체가 복제되어 ms가 개발될 때 사전 개체가 사용되었다는 wrox의 책에 기록된 내용을 추가로 검증합니다.
실제로는 고객을 위한 것입니다. 그게 제가 말하는 것입니다.
배열과 사전을 결합하는 코드도 보여드릴 수 있습니다.
<스크립트 언어='vbscript'>
나는=1
사진 이름=(xxx)
str=set & pic_ & i & =createobject( & & scripting.dictionary & & )
실행(str)
str=pic_ & i & .add & & picname & & , & & picname &
실행(str)
딤트()
보상(5)
ttt(0)=우우
pic_1.항목 추가,ttt
liu=pic_1(사진이름)
pic_2=createobject(scripting.dictionary) 설정
지우개
보상(5)
ttt(0)=iii
nnn=pic_1(항목)(0)
pic_2.추가 rrr,ttt
zzz=pic_2(rrr)(0)
경고(리우)
경고(nnn)
경고(zzz)
</script>