Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   object (https://javascript.ru/forum/events/2641-object.html)

q--b 26.01.2009 18:06

object
 
есть сценарий

<head>
<title>anc</title>
<script language='text/javascript'>
function card(name,address,work,home){
	this.name=name;
	this.address=address;
	this.workphone=work;
	this.homephone=home;
	}
function print(){
	stra='name'+this.name+'<br>\n';
	strb='addr'+this.address+'<br>\n';
	strc='work'+this.workphone+'<br>\n';
	strd='home'+this.homephone+'<br>\n';
	document.write(stra,strb,strc,strd);
	}
function card(name,address,work,home){
	this.name=name;
	this.address=address;
	this.workphone=work;
	this.homephone=home;
	this.print=print;
	}
fck=new card('fck','street','555','555');
</script>
</head>


грамотно ли я написал и как правильно вывести функцией print(); на печать содержимое вновь созданных обьектов в теле документа ?
p.s.
немогу найти общего языка с debugger'ом

Андрей Параничев 26.01.2009 18:19

http://javascript.ru/tutorial/object/intro
http://javascript.ru/tutorial/object/thiskeyword

q--b 30.01.2009 01:15

я разобрался Андрей - спасибо за ответ, - читать я люблю так ,что помимо того,что у вас тут написано прочитал бегло еще пару пособий поэксперементировал с обьектами,благо опыт небольной уже есть в программировании. . .в основном в js интересует именно обьектная модель, так,что возможно я тут стану частым гостем. . .я вообще то сообразительный ,но голову иногда нужно поворачивать в нужную сторону . . . ;))
p.s.
google - power ! ))

а кстати народ кому данный вопрос также интересен - ооочень толково все освещено тут . . .- http://wdh.suncloud.ru/js07.htm

Код:

<html>
<head>
<title></title>
<script type='text/javascript'>
function car(model,color,year){
        this.model=model;
        this.color=color;
        this.year=year;
        }
var mycar=new car('honda','black','2009');
</script>
</head>
<body>
<a href='#' onclick="write('автомобиль: ',mycar.model+', ',mycar.color+', ',mycar.year,mycar.length+', ',mycar[0]);">print</a>
</body>
</html>

вобщем в итоге вот так вот я это все изобразил и для проверки наличия массива вписал 2 последних значения однако получив ответ
"автомобиль: honda, black, 2009, undefined, undefined"
дословно означающий чуть ли не, - пошел на х..! решил даже не начинать попытки вывода свойств обьекта mycar циклом for ибо что выводить.
я возможно не правильно понял - обьясните , - разве mycar не является массивом свойств?
p.s.
непривычно как то после php вроде 2-3 дня уже ковыряюсь,а никак к синтаксису не приспособлюсь

Андрей Параничев 30.01.2009 04:18

Оператор new создает объект, используя заданный конструктор. Как в PHP мы описываем классы, для создания объектов этих классов, так в JavaScript мы описываем функцию-конструктор, которая создает объект. Вообще, в JavaScript существует несколько способов создать объект, и один из них - оператор new. Об этом подробнее было по ссылкам, что я давал постом выше.

Объект это не массив (даже не ассоциативный массив, если рассматривать по идеологии php), поэтому в нем нет свойства length.

Возможно в понимании отличия объектов от массивов вам поможет обсуждение в этой теме.

q--b 30.01.2009 04:50

Цитата:

Сообщение от Андрей Параничев (Сообщение 11595)
Оператор new создает объект, используя заданный конструктор. Как в PHP мы описываем классы, для создания объектов этих классов, так в JavaScript мы описываем функцию-конструктор, которая создает объект. Вообще, в JavaScript существует несколько способов создать объект, и один из них - оператор new. Об этом подробнее было по ссылкам, что я давал постом выше.

Объект это не массив (даже не ассоциативный массив, если рассматривать по идеологии php), поэтому в нем нет свойства length.

Возможно в понимании отличия объектов от массивов вам поможет обсуждение в этой теме.

спасибо конечно,но ссылка на момент просмотра битая . . .- мне самое главное было услышать слова "даже не ассоциативный массив, если рассматривать по идеологии php"
дальше разберусь . . . -знаете ,как говорят - "недочитал",а я видимо перечитал - напутал чего то решил,что они и еже с ними все есть массивы ан нет же ! ))) ну да ладно - не страшно все равно добью их )))
а про варианты создания обьекта я понял,как нельзя лучше да и дом маломальски знаю так,что думаю - решение не за горами . . .! )))
p.s.
спасибо за заботу !)))

q--b 30.01.2009 05:33

знаете ,что меня смутило в первую очередь ? вот,что . . .


3.6.5. Оператор for…in

Оператор for…in выполняет заданные действия для каждого свойства объекта или для каждого элемента массива. Он имеет вид:
for (переменная in выражение) оператор

Здесь переменная — это декларация переменной, выражение — любое выражение, значением которого является объект или массив, оператор — любая группа операторов JavaScript; если эти группа содержит более одного оператора, то она должны быть заключена в фигурные скобки {}.

Оператор for…in выполняется следующим образом:
Переменной присваивается имя очередного свойства объекта или очередного элемента массива (это зависит от того, является значением выражения объект или массив).
Выполняется оператор.
Управление передается этапу 1.

При итерации массива переменной последовательно присваиваются значение первого, второго, ..., последнего элемента массива. Однако, при итерации свойств объекта невозможно предсказать, в каком порядке они будут присваиваться переменной: этот оператор гарантирует только то, что все они будут просмотрены.

Следующий сценарий создает новый объект ob, а затем последовательно выводит все его свойства на экран обозревателя:
var ob = {"а" : "Архангельск", "б" : "Баку", "в" : "Воронеж"};
for (var key in ob)
document.write(key + ": " + ob[key] + "<BR>");

На экране появится текст
а: Архангельск
б: Баку
в: Воронеж

а именно - я прозевал вот что
"Однако, при итерации свойств объекта невозможно предсказать, в каком порядке они будут присваиваться переменной: этот оператор гарантирует только то, что все они будут просмотрены."
обьясните - for...in это эквивалент foreach ?я понял ,что нет ибо не смог вывести им все 3 элемента даже после того ,как прописал все именно так ,как указано в примере - он вывел мне тоько первый. . .

Zibba 30.01.2009 12:37

Ссылка не битая, просто Андрей дал с чуть чуть не парвильную ссылку :) , вот не битая ссылка на ту тему

Андрей Параничев 30.01.2009 16:52

for...in это цикл итерации по свойствам объекта. Это не совсем тоже самое, что foreach (который работает только с массивами), хотя во многих случаях работает так же.

q--b 30.01.2009 17:15

Цитата:

Сообщение от Андрей Параничев (Сообщение 11653)
for...in это цикл итерации по свойствам объекта. Это не совсем тоже самое, что foreach (который работает только с массивами), хотя во многих случаях работает так же.

ну про foreach мне рассказывать - лишнее, наслышан ! ,а вот нотации про for...in от спецов с удовольствием послушал бы,однако google рулит и я разберусь с ним если это единственный способ общего вывода всех свойств разом . . .
по вашей ссылке я так и не зашел . . . - "сервер не найден" да и в общем , - судя по всему,зря я вообще всю эту кашу заварил . . . - все равно разберусь . . . - просто придется чуть больше внимания уделить этому моменту. . .А вот ваша ссылка Zibba работает - спасибо,почитаю,хотя тут больше пожалуй уже нужна практика - теории пока вполне достаточно принцип создания обьектов js я понял - вариант не из самых сложных ,осталось понять принцип рабоы оператора. . .и вопрос решен. Сейчас проснусь окончательно и додумаю.
p.s.
еще раз спасибо за внимание

x-yuri 31.01.2009 09:38

Цитата:

обьясните - for...in это эквивалент foreach ?я понял ,что нет ибо не смог вывести им все 3 элемента даже после того ,как прописал все именно так ,как указано в примере - он вывел мне тоько первый. . .
как именно прописал?


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