天天看點

通路JavaScript對象的構造函數時失敗

 在JavaScript定義的對象中,不管是内部對象,還是使用者自定的對象。如果該對象是從模态視窗(Modal Dialog)中建立并傳回到主視窗中的,我們将無法在主視窗中取到該對象的構造函數(constructor)。

    執行如下兩個示例:

    1、Main.htm

通路JavaScript對象的構造函數時失敗

<html>

通路JavaScript對象的構造函數時失敗

<head>

通路JavaScript對象的構造函數時失敗

    <title>Main Page</title>

通路JavaScript對象的構造函數時失敗

    <meta name="author" content="birdshome@部落格園" />

通路JavaScript對象的構造函數時失敗

</head>

通路JavaScript對象的構造函數時失敗

<body>

通路JavaScript對象的構造函數時失敗

    <button onclick="GetValueFromDialog()">

通路JavaScript對象的構造函數時失敗

        click</button>

通路JavaScript對象的構造函數時失敗

    <script>

通路JavaScript對象的構造函數時失敗

    var m_Array = []; 

通路JavaScript對象的構造函數時失敗

    function GetValueFromDialog()

通路JavaScript對象的構造函數時失敗

    {

通路JavaScript對象的構造函數時失敗

         var array = window.showModalDialog('dialog.htm');

通路JavaScript對象的構造函數時失敗

         alert(array.constructor);

通路JavaScript對象的構造函數時失敗

         // alert(new m_Array.constructor);

通路JavaScript對象的構造函數時失敗

         // alert(new array.constructor);

通路JavaScript對象的構造函數時失敗

    }

通路JavaScript對象的構造函數時失敗

   </script>

通路JavaScript對象的構造函數時失敗

</body>

通路JavaScript對象的構造函數時失敗

</html>

通路JavaScript對象的構造函數時失敗

    2、Dialog.htm

通路JavaScript對象的構造函數時失敗
通路JavaScript對象的構造函數時失敗
通路JavaScript對象的構造函數時失敗

    <title>Modal Dialog</title>

通路JavaScript對象的構造函數時失敗

    <meta name="author" content="birdshome@部落格園" /> 

通路JavaScript對象的構造函數時失敗
通路JavaScript對象的構造函數時失敗
通路JavaScript對象的構造函數時失敗
通路JavaScript對象的構造函數時失敗

    function ReturnValue()

通路JavaScript對象的構造函數時失敗
通路JavaScript對象的構造函數時失敗

         window.returnValue = ['modal dialog'];

通路JavaScript對象的構造函數時失敗

         // window.returnValue = new function foo(){}; 

通路JavaScript對象的構造函數時失敗

         window.close();

通路JavaScript對象的構造函數時失敗

    }   

通路JavaScript對象的構造函數時失敗

    </script>

通路JavaScript對象的構造函數時失敗

   <button onclick="ReturnValue()">close</button> 

通路JavaScript對象的構造函數時失敗
通路JavaScript對象的構造函數時失敗
通路JavaScript對象的構造函數時失敗

    關閉彈出視窗dialog.htm,執行alert(array.constructor);将會引發腳本運作時異常:

通路JavaScript對象的構造函數時失敗

 A Runtime Error has occurred.

通路JavaScript對象的構造函數時失敗

 Do you wish to Debug?

通路JavaScript對象的構造函數時失敗
通路JavaScript對象的構造函數時失敗

 Line: 12

通路JavaScript對象的構造函數時失敗

 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"。

通路JavaScript對象的構造函數時失敗

本文轉自部落格園鳥食軒的部落格,原文連結:http://www.cnblogs.com/birdshome/,如需轉載請自行聯系原部落客。

繼續閱讀