Показать сообщение отдельно
  #1 (permalink)  
Старый 09.01.2010, 19:39
Новичок на форуме
Отправить личное сообщение для bonifacii Посмотреть профиль Найти все сообщения от bonifacii
 
Регистрация: 09.01.2010
Сообщений: 3

Вопрос по поводу свойства "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>
Ответить с цитированием