מה המוטיווציה ליצור מופעה (new) ב-JS??

  • הוסף לסימניות
  • #1
במקרה ורוצים לשמור מידע - אני מבין את היתרון

אבל ראיתי דוגמאות שמעבירים כארגומנט (new function) מבלי לשמור אותו בתוך אוביקט עם שם (שניתן יהיה לקרוא לו אח"כ)
ובמקרה כזה הלבשה על הדיס שווה לשימוש ב-var שלא שימושי לאחר שהפונקציה רצה
אז מה זה נותן?
מתודות שיושבות על הפרוטוטייפ?


שאלה נוספת
לפעמים שימוש ב-Function arrow הורס לי את התוכנית
לא בכל מקום זה יכול להחליף את function?
למה? כי א"א לשנות לו את קשירת ה-this?

הצעה למנהלים: הוסיפו קידמות JS, אולי הגיע הזמן שידברו פה יותר על JS כשפת תכנות, ובכלל.
 
  • הוסף לסימניות
  • #2
אני לא הבנתי מה אתה שואל.
(אף כי מודה, לא שברתי את הראש יותר מדי)
 
  • הוסף לסימניות
  • #4
JS עושה חיקוי עלוב של OOP וזה הדרך לממש "OOP" ב JS

סינית לעברית:
JS - ג'אווה סקריטפ
OOP - תיכנות מונחה עצמים Object Oriented Programming

וזה מאוד נוח בכדי להגביל את החשיפה של דברים
היינו להשתמש בפונקציות פרטיות
או בכדי ליצור הורשה
 
  • הוסף לסימניות
  • #5
יש לזכור של Func. Arrow - זה שייך ל ECMAScript 6 כאשר הסטאנדרט היום עדיין
ECMAScript 5.
וב ECMAScript 5 אין את ה Arrow Func.
 
  • הוסף לסימניות
  • #6
נכתב ע"י יהודהלה;1926192:
יש לזכור של Func. Arrow - זה שייך ל ECMAScript 6 כאשר הסטאנדרט היום עדיין
ECMAScript 5.
וב ECMAScript 5 אין את ה Arrow Func.

יודע
ולעצם הפונקציה?
 
  • הוסף לסימניות
  • #7
נכתב ע"י יהודהלה;1926182:
JS עושה חיקוי עלוב של OOP וזה הדרך לממש "OOP" ב JS

סינית לעברית:
JS - ג'אווה סקריטפ
OOP - תיכנות מונחה עצמים Object Oriented Programming

וזה מאוד נוח בכדי להגביל את החשיפה של דברים
היינו להשתמש בפונקציות פרטיות
או בכדי ליצור הורשה

פונקציה שבתוכו יש פונקציה נוספת היא גם פרטית, ככה באמת הופכים אותם לפרטיים,
אבל לא צריך בשביל זה להפוך את הפונקציה לאוביקט.

ובשביל מה צריך להוריש, מריצים את אותה פונקציה (בה יש פונקציות נוספות) שוב ושוב עם הפרמטרים החדשים (והם נשמרים זמנית במשתנים מקומיים).
שוב, במידה ואני לא צריך שהמידע ישמר אחרי שהפונקציה מסיימת לרוץ.
 
  • הוסף לסימניות
  • #8
נכתב ע"י אהרן2;1926137:
http://jsfiddle.net/5o5zwjqh/

בסוף יש
קוד:
}
 
    new SineWave(new AudioContext()).play();
}

מה זה??

עדיין לא כ"כ הבנתי מה אתה שואל.
הפונקציה SineWave מקבלת ארגומנט
קוד:
SineWave = function(context)
ואחר כך משתמשת בו. הארגומנט הזה - זה אובייקט AudioContext
אז כשקוראים לפונקציה SineWave צריך לשלוח את את האובייקט ההוא.
 
  • הוסף לסימניות
  • #9
חלק מעקרונות ה OOP - זה REUSABLE CODE - (=קוד שאפשר להשתמש מחדש)

לדוגמה כל חיה אוכל והכלב נובח.

ההגדרה "חיה":
- פונקציה: לאכול()

ההגדרה "כלב" יורש מ"חיה":
- פונקציה: לנבוח()

כשאני יעשה כלב.לאכול - הוא ישתמש בקוד של חייה. וכך אינני צריך כל פעם לבנות מחדש את ה"לאכול" לכל חיה
 
  • הוסף לסימניות
  • #10
נכתב ע"י יהודהלה;1927002:
חלק מעקרונות ה OOP - זה REUSABLE CODE - (=קוד שאפשר להשתמש מחדש)

לדוגמה כל חיה אוכל והכלב נובח.

ההגדרה "חיה":
- פונקציה: לאכול()

ההגדרה "כלב" יורש מ"חיה":
- פונקציה: לנבוח()

כשאני יעשה כלב.לאכול - הוא ישתמש בקוד של חייה. וכך אינני צריך כל פעם לבנות מחדש את ה"לאכול" לכל חיה

אבל בדוגמא הזו אין עריכה של המופע (הוא לא נובח)
אז למה יוצרים ממנו מופע נוסף ע"י new?
 
  • הוסף לסימניות
  • #11
נכתב ע"י s976;1926248:
עדיין לא כ"כ הבנתי מה אתה שואל.
הפונקציה SineWave מקבלת ארגומנט
קוד:
SineWave = function(context)
ואחר כך משתמשת בו. הארגומנט הזה - זה אובייקט AudioContext
אז כשקוראים לפונקציה SineWave צריך לשלוח את את האובייקט ההוא.

זה אני מבין
אבל מדוע זה מגיע עם new לפניו (יצירת מופע חדש)?
 
  • הוסף לסימניות
  • #12
צודק. לא הוספתי מופע.

ההגדרה "חיה":
- פונקציה: לאכול()

ההגדרה "כלב" יורש מ"חיה":
- פונקציה: לנבוח()


חדש כלב_א יורש מכלב
חדש כלב_ב יורש מכלב

(דמיין שהוספתי כמות נביחות - באובייקט כלב, ובפונקציה של לאכול הוספתי גם מספור)

כלב_א.לנבוח()
כלב_א.לאכול()
כלב_א.לנבוח()
כלב_א.לאכול()
כלב_א.לנבוח()

כלב_ב.לנבוח()
כלב_א.לאכול()
כלב_ב.לנבוח()

מה תהיה התוצאה של כלב_א.מספר_נביחות() ו כלב_ב.מספר_נביחות()
?? ולמה ?

מה תהיה כמה נספר בכל כלב שהוא אכל? ולמה? איכן נשמר המשתנה של אוכל?
 
  • הוסף לסימניות
  • #13
כל זה אני יודע
אבל זו לא הדוגמא
בדוגמא הזו אין אתכל הנ"ל, אז מה נתן להם new
לדעתי בשביל לשמור את המידע כמו התדר של הקול
אז זה בשביל לשמור מידע לעתיד

אם אין סיבה כזו
יש יתרון ביצירת מופע?
 
  • הוסף לסימניות
  • #14
בגדול NEW יוצר בידוד (אלוקציה של זיכרון). כשאתה עושה PAUSE או PLAY הנקודה איכן שזה נמצא איפה נשמר?(במופע)

בנוסף זה שומר לך STATE בתוך האובייקט וכל מיני אפקטים אתה יכול לעשות כגון GAIN וכו
שמתאים רק לקנוטקסט הזה.

זה לא משנה "העריכת המופע" מה שמשנה שזה יהיה מופע. ובכדי שזה יהיה מופע אז צריך לעשות NEW

תראה כאן
 

פרוגבוט

תוכן שיווקי
פרסומת

פוסטים חדשים שאולי לא קראת....

הצטרפות לניוזלטר

איזה כיף שהצטרפתם לניוזלטר שלנו!

מעכשיו, תהיו הראשונים לקבל את כל העדכונים, החדשות, ההפתעות בלעדיות, והתכנים הכי חמים שלנו בפרוג!

לוח מודעות

הפרק היומי

הפרק היומי! כל ערב פרק תהילים חדש. הצטרפו אלינו לקריאת תהילים משותפת!


תהילים פרק כה

אלְדָוִד אֵלֶיךָ יי נַפְשִׁי אֶשָּׂא:באֱלֹהַי בְּךָ בָטַחְתִּי אַל אֵבוֹשָׁה אַל יַעַלְצוּ אֹיְבַי לִי:גגַּם כָּל קוֶֹיךָ לֹא יֵבֹשׁוּ יֵבֹשׁוּ הַבּוֹגְדִים רֵיקָם:דדְּרָכֶיךָ יי הוֹדִיעֵנִי אֹרְחוֹתֶיךָ לַמְּדֵנִי:ההַדְרִיכֵנִי בַאֲמִתֶּךָ וְלַמְּדֵנִי כִּי אַתָּה אֱלֹהֵי יִשְׁעִי אוֹתְךָ קִוִּיתִי כָּל הַיּוֹם:וזְכֹר רַחֲמֶיךָ יי וַחֲסָדֶיךָ כִּי מֵעוֹלָם הֵמָּה:זחַטֹּאות נְעוּרַי וּפְשָׁעַי אַל תִּזְכֹּר כְּחַסְדְּךָ זְכָר לִי אַתָּה לְמַעַן טוּבְךָ יי:חטוֹב וְיָשָׁר יי עַל כֵּן יוֹרֶה חַטָּאִים בַּדָּרֶךְ:טיַדְרֵךְ עֲנָוִים בַּמִּשְׁפָּט וִילַמֵּד עֲנָוִים דַּרְכּוֹ:יכָּל אָרְחוֹת יי חֶסֶד וֶאֱמֶת לְנֹצְרֵי בְרִיתוֹ וְעֵדֹתָיו:יאלְמַעַן שִׁמְךָ יי וְסָלַחְתָּ לַעֲוֹנִי כִּי רַב הוּא:יבמִי זֶה הָאִישׁ יְרֵא יי יוֹרֶנּוּ בְּדֶרֶךְ יִבְחָר:יגנַפְשׁוֹ בְּטוֹב תָּלִין וְזַרְעוֹ יִירַשׁ אָרֶץ:ידסוֹד יי לִירֵאָיו וּבְרִיתוֹ לְהוֹדִיעָם:טועֵינַי תָּמִיד אֶל יי כִּי הוּא יוֹצִיא מֵרֶשֶׁת רַגְלָי:טזפְּנֵה אֵלַי וְחָנֵּנִי כִּי יָחִיד וְעָנִי אָנִי:יזצָרוֹת לְבָבִי הִרְחִיבוּ מִמְּצוּקוֹתַי הוֹצִיאֵנִי:יחרְאֵה עָנְיִי וַעֲמָלִי וְשָׂא לְכָל חַטֹּאותָי:יטרְאֵה אוֹיְבַי כִּי רָבּוּ וְשִׂנְאַת חָמָס שְׂנֵאוּנִי:כשָׁמְרָה נַפְשִׁי וְהַצִּילֵנִי אַל אֵבוֹשׁ כִּי חָסִיתִי בָךְ:כאתֹּם וָיֹשֶׁר יִצְּרוּנִי כִּי קִוִּיתִיךָ:כבפְּדֵה אֱלֹהִים אֶת יִשְׂרָאֵל מִכֹּל צָרוֹתָיו:
נקרא  2  פעמים
למעלה