<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; JS: Непонятный синтаксис.]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=8092&amp;type=atom" />
	<updated>2013-02-21T06:47:46Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=8092</id>
		<entry>
			<title type="html"><![CDATA[Re: JS: Непонятный синтаксис.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=69682#p69682" />
			<content type="html"><![CDATA[<p>Разобрался, всем спасибо.</p>]]></content>
			<author>
				<name><![CDATA[im2002]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=28063</uri>
			</author>
			<updated>2013-02-21T06:47:46Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=69682#p69682</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Непонятный синтаксис.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=69660#p69660" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>var x = new t[&#039;Date&#039;];&nbsp; var x = new t.Date; - эти строки вызывают ошибку: &quot;Предполагается наличие объекта&quot;</p></blockquote></div><p>Видимо мне стоило написать полный пример, как правильно сказал <strong>Spy00000</strong><br /></p><div class="quotebox"><blockquote><p>Я так понимаю, Rumata предполагал, что перед его примером будет идти Ваш пример полностью.</p></blockquote></div><div class="quotebox"><blockquote><p>т.е. строка типа: var t = Date;&nbsp; будет означать, что я в переменную t записал ссылку на функцию с именем Date(), без входных параметров, в которой может быть что угодно: хоть умножение 2*2 и эта моя Date() ни как не связана со встроенной в JS Date(), которая предназначена для работы с форматами даты/времени???</p></blockquote></div><p>Вы правы и ошиблись одновременно. Правы - в переменную записывается ссылка на объект. Но форма записи другая, поэтому выводы ошибочны. Не путайте присвоение функции и присвоение результата функции. Посмотрите код:<br /></p><div class="codebox"><pre><code>
var t = Date;   // создать ссылку на функцию Date
var t = Date(); // вызвать функцию Date
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2013-02-20T11:33:53Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=69660#p69660</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Непонятный синтаксис.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=69659#p69659" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>im2002 пишет:</cite><blockquote><p>var x = new t[&#039;Date&#039;];&nbsp; var x = new t.Date; - эти строки вызывают ошибку:<strong> &quot;Предполагается наличие объекта&quot;</strong>, даже если я заранее определил var t = new Array(). или var t = new Object().</p></blockquote></div><p>Я так понимаю, <strong>Rumata</strong> предполагал, что перед его примером будет идти Ваш пример полностью. Чтобы не было ошибки нужны строки:<br /></p><div class="codebox"><pre><code>t = new Array();         
t[&quot;Date&quot;] = Date; </code></pre></div><div class="quotebox"><cite>im2002 пишет:</cite><blockquote><p>т.е. строка типа: var t = Date;&nbsp; будет означать, что я в переменную t записал ссылку на функцию с именем Date(), без входных параметров, ... и эта моя Date() ни как не связана со встроенной в JS Date() ... ???</p></blockquote></div><p>В переменную t запишется ссылка на функцию с именем Date, которую Вы можете вызвать с любым числом параметров.<br />Если у Вас уже будет описана Ваша функция Date, запишется ссылка на неё, если функция не будет описана - запишется ссылка на стандартную функцию Date, которую можно вызвать:<br /></p><div class="codebox"><pre><code>var t = [];         
t[&quot;Date&quot;] = Date;         
t[&quot;Object&quot;] = Object;
t[&quot;Array&quot;] = Array;

var d = new t[&quot;Date&quot;]( 2013, 0, 1);
WScript.Echo( d );

var d2 = new t.Date( 2014, 0, 1, 2, 3, 4);
WScript.Echo( d2 );

var a = new t[&#039;Array&#039;]( 2015, 0, 1, 2, 3, 4);
WScript.Echo( a.length );
WScript.Echo( a );
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Spy00000]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27060</uri>
			</author>
			<updated>2013-02-20T10:56:28Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=69659#p69659</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Непонятный синтаксис.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=69658#p69658" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Rumata пишет:</cite><blockquote><div class="codebox"><pre><code>
var x = new t[&#039;Date&#039;];                     
alert(x);

// а можно записать и так, потому что имя свойства допустимое и состоит только из букв
var x = new t.Date;
alert(x);
</code></pre></div></blockquote></div><p>var x = new t[&#039;Date&#039;];&nbsp; var x = new t.Date; - эти строки вызывают ошибку:<strong> &quot;Предполагается наличие объекта&quot;</strong>, даже если я заранее определил var t = new Array(). или var t = new Object().<br />Про ассоциативные массивы понятно, спасибо.<br />Осталась небольшая спутанность сознания по вопросу присвоения значений типа Date, Array, и т.п.<br />т.е. строка типа: <strong>var t = Date;</strong>&nbsp; будет означать, что я в переменную t записал ссылку на функцию с именем Date(), без входных параметров, в которой может быть что угодно: хоть умножение 2*2 и эта моя Date() ни как не связана со встроенной в JS Date(), которая предназначена для работы с форматами даты/времени???</p>]]></content>
			<author>
				<name><![CDATA[im2002]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=28063</uri>
			</author>
			<updated>2013-02-20T09:41:21Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=69658#p69658</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Непонятный синтаксис.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=69639#p69639" />
			<content type="html"><![CDATA[<p>Внесу немного путаницы, но без этого никак. JS - это язык, в котором <em>абсолютно нет массивов</em>. Есть объект Array, поведение которого можно интерпретировать как массивы. Объекты Array имеют свойство <strong>length</strong>, которое указывает <em>на следующий доступный индекс для вставки</em>. Вот пример, чтобы было понятно:<br /></p><div class="codebox"><pre><code>
var x = []; // Это более короткая и удобная запись чем new Array()
x[0] = 0;
x[1] = 0;
alert(x.length); // выведет число 2, видимо это количество элементов
x[9] = 0;
alert(x.length); // выведет число 10, хотя в массив добавлено ТОЛЬКО 3 элемента!!!
</code></pre></div><p>А теперь к сути вопроса. <br />Запись вида <strong>переменная[&quot;слово&quot;]</strong> - указатель на элемент ассоциативного массива, понятие которых которые очень распространено во многих ЯП (например, perl, python, JS). Они расширяют свойство массива, когда указателем на элемент массива может быть не только целое неотрицательное число, но <em>любая строка</em>. Нечисловой индекс - это имя свойства, простой литерал. </p><p>В JS все может быть объектом. Функции тоже. И любые объекты можно назначать любым переменным. Значением t[&#039;Date&#039;] является функция Date, вызвав которую можно будет инициализировать объект, наследующий свойства Date. </p><div class="codebox"><pre><code>
var x = new t[&#039;Date&#039;];
alert(x);

// а можно записать и так, потому что имя свойства допустимое и состоит только из букв
var x = new t.Date;
alert(x);
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2013-02-19T17:30:36Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=69639#p69639</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Непонятный синтаксис.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=69638#p69638" />
			<content type="html"><![CDATA[<p>Если объявляется <strong>var s = [];</strong>, то только тогда <strong>s</strong> - это <strong>индексный</strong> массив.</p><p>При объявлении <strong>var s = new Array ();</strong> массив <strong>s</strong> может быть как индексным, так и <strong>хеш-массивом</strong> (последний фактически ничем не отличается от Object)<br />Пример:<br /></p><div class="codebox"><pre><code>var s = new Array ();

s [&#039;prop1&#039;] = 123;
s [&#039;prop2&#039;] = &#039;abc&#039;;
s [&#039;prop3&#039;] = [4, 5, 6];

for (var j = 1; j &lt; 4; j++) alert (s [&#039;prop&#039; + j]);</code></pre></div>]]></content>
			<author>
				<name><![CDATA[kalabuni]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=29222</uri>
			</author>
			<updated>2013-02-19T17:20:43Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=69638#p69638</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[JS: Непонятный синтаксис.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=69636#p69636" />
			<content type="html"><![CDATA[<p>Встретил в скрипте, такой вот кусок...<br /></p><div class="codebox"><pre><code>
t = new Array();         
t[&quot;Date&quot;] = Date;         
t[&quot;Object&quot;] = Object;
t[&quot;Array&quot;] = Array;
</code></pre></div><p>Не могу понять, что значат эти записи типа: t[&quot;Array&quot;] = Array? <br />Если бы t был не Array, а Object, тогда t[&quot;Array&quot;] можно интерпретировать как свойство с именем Array объекта t... <br />Но как понять значение этого свойства равное Array? Понятно, что это принадлежность к классу, т.е. что элемент массива t[&quot;Array&quot;] это объект, соответствующий классу Array (ну и Object, т.к. массив это тоже объект). Непонятно как такое &quot;присваивание&quot; не вызывает ошибки. Если t массив, то в [] указывается индекс элемента...<br />Как индекс может быть &quot;Array&quot;? Переведите на более понятный язык, кто может.</p>]]></content>
			<author>
				<name><![CDATA[im2002]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=28063</uri>
			</author>
			<updated>2013-02-19T15:56:30Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=69636#p69636</id>
		</entry>
</feed>
