博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
访问JavaScript对象的构造函数时失败
阅读量:5938 次
发布时间:2019-06-19

本文共 1561 字,大约阅读时间需要 5 分钟。

 在JavaScript定义的对象中,不管是内部对象,还是用户自定的对象。如果该对象是从模态窗口(Modal Dialog)中创建并返回到主窗口中的,我们将无法在主窗口中取到该对象的构造函数(constructor)。

    执行如下两个示例:
    1、Main.htm

None.gif
<
html
>
None.gif
<
head
>
None.gif    
<
title
>Main Page
</
title
>
None.gif    
<
meta 
name
="author"
 content
="birdshome@博客园"
 
/>
None.gif
</
head
>
None.gif
<
body
>
None.gif    
<
button 
onclick
="GetValueFromDialog()"
>
None.gif        click
</
button
>
ExpandedBlockStart.gif    
<
script
>
InBlock.gif    
var  m_Array  =  []; 
InBlock.gif    
function  GetValueFromDialog()
ExpandedSubBlockStart.gif     {
InBlock.gif         
var  array  =  window.showModalDialog('dialog.htm');
InBlock.gif         alert(array.constructor);
InBlock.gif         
//
 alert(new m_Array.constructor);
InBlock.gif
         
//
 alert(new array.constructor);
ExpandedSubBlockEnd.gif
    }
ExpandedBlockEnd.gif   
</
script
>
None.gif
</
body
>
None.gif
</
html
>
None.gif
    2、Dialog.htm
None.gif
<
html
>
None.gif
<
head
>
None.gif    
<
title
>Modal Dialog
</
title
>
None.gif    
<
meta 
name
="author"
 content
="birdshome@博客园"
 
/> 
None.gif
</
head
>
None.gif
<
body
>
ExpandedBlockStart.gif    
<
script
>
InBlock.gif    
function  ReturnValue()
ExpandedSubBlockStart.gif     {
InBlock.gif         window.returnValue  =  ['modal dialog'];
InBlock.gif         
//
 window.returnValue = new function foo(){}; 
InBlock.gif
         window.close();
ExpandedSubBlockEnd.gif    }    
ExpandedBlockEnd.gif    
</
script
>
None.gif   
<
button 
onclick
="ReturnValue()"
>close
</
button
> 
None.gif
</
body
>
None.gif
</
html
>
None.gif
    关闭弹出窗口dialog.htm,执行alert(array.constructor);将会引发脚本运行时异常:
None.gif A Runtime Error has occurred.
None.gif Do you wish to Debug?
None.gif
None.gif Line: 12
None.gif Error: Unexpected call to method or property access.
    // Unable to evaluate the expression. Catastrophic failure
    不过在这里JavaScript的内部对象和用户自定义对象还有一点小区别,如果是JS内部对象,我们访问对象的构造函数就立即出错。alert(array.constructor)就异常了。而如果是用户指定一对象,我们可以执行alert(array.constructor)得到一个显示"[object]"的MsgBox,但是这时的contrutor仍然不支持任何的操作和执行任何方法,比如new、.toString()等,一旦执行就出和上面一样的异常"Unable to evaluate the expression. Catastrophic failure"。

    这个缺陷似乎对我们的影响不是很大,不过对于一些依赖于对象的constructor来实现的功能就郁闷了,比如、、以及我上次做的一个等,在这中情况下就都歇菜了hitwall.gif

本文转自博客园鸟食轩的博客,原文链接:http://www.cnblogs.com/birdshome/,如需转载请自行联系原博主。

你可能感兴趣的文章
内容激活码jsp发送email
查看>>
ios 打电话结束返回到应用中
查看>>
当下全球最炙手可热的八位少年创业者
查看>>
JQuery 表单校验插件 validate 使用纪录
查看>>
开源项目与许可证
查看>>
已释放的栈内存
查看>>
MySQL字符串函数substring:字符串截取
查看>>
ystep jQuery流程、步骤插件
查看>>
JQuery+ajax+jsonp 跨域访问
查看>>
现代软件工程 第七章 【MSF】练习与讨论
查看>>
Android网络之数据解析----SAX方式解析XML数据
查看>>
Java递归列出所有文件和文件夹
查看>>
[关于SQL]查询成绩都大于80分的学生
查看>>
Delphi(Tuxedo,BDE,ADO)三合一数据集组件HsTxQuery
查看>>
java之ibatis数据缓存
查看>>
纪念逝去的岁月——C/C++选择排序
查看>>
第6章 数组----复制数组
查看>>
STL区间成员函数及区间算法总结
查看>>
“TNS-03505:无法解析名称”问题解决一例
查看>>
二分图
查看>>