متوجه نشدن متدها در جاوااسکریپت

پرسیده شده
فعالیت 1434 روز پیش
دیده شده 1025 بار
0

با سلام

1. من آبجکت ها (property, method) در جاوااسکریپت را متوجه نمیشم، مثلا:

L.map('map').setView([35.6892, 51.3890], 13);

L: آبجکت leaflet هستش که یکسری توابع(methods) داخلش است مثل"map" و ...

setView: آیا این هم تابع هستش؟ میدونم که جزء توابع آبجکت L نیست. آیا از توابع داخل map هستش؟

 

2. برای تعریف setView جدید گفتیم داریم: مثلا

map.setView([35.78, 51.28], 13);

که map متغیرمون هستش، در کد بالا setView جدید overwrite میشه؟

 

3. برای دریافت bound هم نوشتیم:

var northLine = map.getBounds().getNorth();

دوباره از متغیر map استفاده کردیم به اضافه چند متد. اگر کد بالا را بدون متغر map بنویسیم، داریم:

var north = L.map('map').setView([35.6892, 51.3890], 13).getBounds().getNorth();

اگر bound های صفحه را به روش بالا تعریف کنیم کار نمیکنه!

متوجه نمیشم که چرا همین جوری متدها رو پشت هم می نویسیم؟!

 

4. توابع جاوااسکریپت هم که بهمون event برمیگردانند هم درک نمیکنم که چی میشه؟

مثلا یه جا event رو برمی گردانیم و با متد stopPropagation استفاده می کنیم،

یا مثلا در این پروژه یکسری آبجکت به ما میده، مثل lat&lng

نمیفهمم?

فایل پیوست

محمدرضا رحیمی
محمدرضا رحیمی

2 خرداد 99

1
حذف شده

سلام و احترام

۱ - کتابخانه leaflet با مفاهیم شئ گرایی توسعه داده میشه به خاطر همینه که از طریق L شما به یکسری از توابع دسترسی دارید و از درون توابع های L نیز شما به توابع دیگر دسترسی دارید، اگر بخواهم واضع تر بگم مثل یک زنجیر میمونه که بهم دیگه وصلن.

۲ - setView جدیدی که تعریف می‌کنید باعث overwrite شدن آن می‌شود

۳ - در این کد که شما آورده اید:

L.map('map').setView([35.6892, 51.3890], 13).getBounds().getNorth();

setview تابعی به نام getBounds ندارد به خاطر همینه که شما خروجی دریافت نمی‌کنید، همان طور که اشاره شد این کتابخانه با مفاهیم شئ گرایی در حال توسعه است و توابع را می‌توان زنجیر وارد داشت.

هر تابعی که شما صدا می‌زنید یک سری توابع های مرتبط درون خودش دارد

۴ - طبق عملی که درون سند html اتفاق می‌افته به شما event برمیگردونه 

برای مثال وقتی شما روی یک فرم کلیک میکنید تا اطلاعات شما رو به سمت سرور ارسال کنه شما می‌تونید این عمل ارسال شدن رو متوقف کنید چون یک event هست یا وقتی روی یک نقشه کلیک می‌کنید تغیراتی که اتفاق میتوفته برای مثال تغییر موقعیت شما تو نقشت پس این event میتونه lng & lat شما رو برگردونه.

فایل پیوست

امیر صالحی

توسط

امیر صالحی

6 خرداد 99

0
حذف شده

ممنون از توضیحات

ولی بازم از این توابع در آبجکت ها سر در نیاوردم ?

چرا وقتی به صورت زیر ازش استفاده کردیم جواب داده:

var northLine = map.getBounds().getNorth();

این map بالا هم که همون متغیرمون هستش که داریم:

L.map('map').setView(DEFUALT_LOCATION, DEFUALT_ZOOM);

برای marker هم اومدیم به جای تعریف متغیر همه رو تو یک خط نوشتیم:

L.marker(DEFUALT_LOCATION).addTo(map).bindPopup('Hello. I`m here').openPopup();

 

فایل پیوست

محمدرضا رحیمی

توسط

محمدرضا رحیمی

6 خرداد 99

2
حذف شده

خب ببینید شما getBounds رو مستقیما از خود map میگیرد و کار میکنه چون داخل خود map همچین تابعی تعریف شده

ولی وقتی getBounds رو از setView می‌خواهید، داخل setView همچنین تابعی وجود نداره و خروجی به شما نشون نمیده چون این تابع از طریق map قابل دسترس هست.

 

اگر سرفصل شئ گرایی رو مشاهده کرده باشید توی PHP ما متدهایی که از یک شئ میخواهیم رو با علامت <- دریافت می‌کنیم، مثال:

benz = new Car();

benz->go();

 

اما در جاوااسکریپ ما به جای <- از نقطه . استفاده می‌کنیم، برای مثال:

car.go()

 

فایل پیوست

امیر صالحی

توسط

امیر صالحی

6 خرداد 99