شی گرایی و دینامیکی درمورد زبان JS
در درس قبل آموختیم زبان JS با صفحات وب چه ارتباطی دارد و دانستیم که برنامه های زبان JS در میان TAG های زبان HTML قرار میگیرد . اما حال بهتر است چگونگی ارتباط JS با صفحات وب را بررسی کنیم .
هر چیزی که شما در صفحه وب می بینید (و گاهی بعضی چیزهایی که نمی بینید ) و در تعریف کلی هر چیزی که صفحه وب را تشکیل می دهد , مثل دکمه ها ( button ) , فرم ها , عکس ها و هزاران چیز دیگر در صفحه وب , شی نام دارند . این اشیاء راه ارتباط js با صفحات وب هستند و در واقع وظیفه اصلی js کنترل این اشیاست . خاصیت شی گرایی (object-oriented) در js باعث شده که بتواند با بیشتر اشیاء در صفحات وب ارتباط برقرار کند .
یک مثال ساده این مفهوم را آشکارتر می کند . اگر ما دنیای واقعی خود را در نظر بگیریم می توانیم میز ها , کتاب ها , سگ ها , گربه ها , انسان ها و همه و همه را شی بنامیم . در صفحات وب نیز شی به همین معناست البته با این تفاوت که در صفحات وب بعضی از اشیاء قابل مشاهده نیستند . در صفحات وب هر شی دارای خصوصیات و مشخصه های خاص خودش است که در زمان بررسی هر شی به ان اشاره خواهم کرد .
همانطور که گفتم این اشیاء بسیار زیادند . برای راحتی استفاده از آنها , گروه ها و زیر دسته هایی در نظر می گیریم و این اشیاء را در این گروه ها طبقه بندی می کنیم .
زبان html به تنهایی نمی تواند با اعمالی که کاربر در درون صفحه وب انجام می دهد ارتباط برقرار کند . و علاوه بر آن توانایی ایجاد جلوه های ویژه که باعث جذابیت صفحه وب می شود را ندارد . و چون کاربر نمی تواند به وقایع (event ) و اشیاء صفحه پاسخ دهد , حالتی کسل کننده برای او ایجاد می شود . زبان JS به خوبی این کمبود در صفحات وب را رفع می کند و به صفحات حالت فعال می دهد . در واقع js این ویژگی را به وسیله خصلت شی گرایی اش کسب کرده است .
مثلا وقتی شما اطلاعات نادرست به یک فرم در صفحه وب می دهید , js با پیغامی می تواند به شما اطلاع دهد . به صورت ساده تر می توان گفت js نوعی امکان انتخاب به کاربر و امکان پاسخ مناسب از طرف خود را می دهد .
با یک مثال ساده تر , مفهوم آشکار تری را در اختیار شما قرار می دهم . شما دوربین عکاسی را در نظر بگیرید که بدون توجه به نور اطراف خود عکس برداری می کند . این دوربین را می توان مانند حالت غیر فعالی html در نظر گرفت . در سوی دیگر دوربینی را در نظر بگیرید که بنا به نور اطراف خود , شفافیت عکس را تنظیم میکند . این دوربین را میتوان مانند js در نظر گرفت که با محیط اطراف خود ارتباط برقرار می کند وتصمیمات لازم را می گیرد و اعمال لازم را انجام می دهد ( البته بر اساس خواست برنامه نویس ) .
حال با مثالی در خود js بحث را تکمیل می کنم . فرض کنید شما وارد صفحه وبی شده اید . بنا به برنامه ای که برنامه نویس نوشته است ابتدا پیغامی مبنی بر اینکه (( آیا شما از رنگ صفحه خوشتان می آید ؟ )) توسط js صادر می شود . در صورت انتخاب جواب مثبت , رنگ صفحه تغییر نمی کند ولی در صورت منفی بودن پاسخ بنا به انتخاب خود شما یا برنامه نویس رنگ صفحه تغییر می کند .
متاسفانه توسط برنامه نویسان مختلف تعاریف اشتباهی درباره مفهوم دینامیک بودن در زبان های برنامه نویسی ارائه می شود . بسیاری به اشتباه , به هر زبانی که شی گرا باشد دینامیک می گویند .
من ابتدا نحوه اجرای JS را مورد بررسی قرار میدهم تا به نتیجه نهایی برسیم .
دو مفهوم Client side languages و Server side languages به ما کمک فراوانی می کنند .
در اصطلاح به کامپیوتر کاربر یا بیننده صفحه , مشتری ( client ) و به کامپیوتری که به کامپیوتر های دیگر جهت مشاهده صفحات وب سرویس می دهد , سرویس دهنده یا میزبان (server ) می گوییم . برنامه ها و فایل های موجود در کامپیوتر میزبان , به 2 صورت می توانند برای کامپیوتر های مشتری مورد استفاده قرار گیرند . در حالت اول , فایل ها دقیقا به کامپیوتر مشتری انتقال یافته و آنجا ترجمه و اجرا می شوند . در این حالت درخواستی به میزبان فرستاده شده و میزبان این درخواست را پردازش می کند . سپس فایل درخواستی را بدون انجام هیچگونه عملیاتی به مشتری می فرستد . پس از انتقال فایل , مشتری فایل را دریافت میکند . فایل توسط مرورگر ترجمه و اجرا می شود . زبان هایی چون JS و HTML و CSS به این صورت عمل می کنند . زبان هایی که به این صورت اجرا می شوند را Client side languages ( زبان های طرف مشتری ) می گویند