Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вопрос по поводу свойства "constructor" (https://javascript.ru/forum/misc/6984-vopros-po-povodu-svojjstva-constructor.html)

bonifacii 09.01.2010 19:39

Вопрос по поводу свойства "constructor"
 
Здравствуйте товарищи. Нужна ваша помощь.

Имеется следующая ситуация:
1. Страница состоит из фреймов.
2. Требуется из одно фрейма вызвать функцию в другом фрейме.
3. Внутри функции происходит проверка на тип входящих параметров. А именно, один из параметров должен быть объектом со свойствами и все такое.
4. Проверяю его следующим образом: "param.constructor == Object".
5. Заведомо подходящий параметр (вот такой: "obj = {}") который должен пройти проверку, проверку не проходит.

Вот. Прошу прокомментировать. Наглядный пример привожу ниже.

index.html:

Код:

<html>
        <frameset rows="0,*" cols="*">
                <frame src="data.html" name="data">
                <frame src="test.html" name="content">
        </frameset>
</html>



test.html:

Код:

<html>
<head>
  <title>проверка</title>
  <script type="text/javascript">
          var obj_1 = {},
            obj_2 = new Object();
       
        alert(obj_1.constructor == Object);        //true
        alert(obj_2.constructor == Object);        //true
       
        test(obj_1, obj_2);
       
        //Здесь все верно. Оба алерта выдают тру.
        function test(obj_1, obj_2) {
                alert(obj_1.constructor == Object);        //true
                alert(obj_2.constructor == Object);        //true
               
                alert(typeof obj_1);                //object
               
                alert(obj_1.constructor);        //  function Object() {
                                                //  [native code]
                                                //  }
        }
       
        //Здесь оба алерта выдают фолс.
        window.parent.data.test(obj_1, obj_2);
  </script>
</head>
<body>
</body>
</html>


data.html:

Код:

<html>
<head>
  <script type="text/javascript">
        function test(obj_1, obj_2) {
                alert(obj_1.constructor == Object);        //false
                alert(obj_2.constructor == Object);        //false
               
                alert(typeof obj_1);                //object
               
                alert(obj_1.constructor);        //  function Object() {
                                                //  [native code]
                                                //  }
        }
  </script>
</head>
<body>
</body>
</html>


tenshi 09.01.2010 20:22

typeof

bonifacii 09.01.2010 20:47

Не понял к чему это и о чем.


Часовой пояс GMT +3, время: 13:30.