Add functionality using Document Object Model Prototypes (IE8) - Part 2
איך להוסיף ולשנות מאפיינים ל - DOM בעזרת prototype ב - IE8
כפי שהתחלתי לתאר
כאן איך אפשר להוסיף ולשנות מתודות של ה - DOM ב - IE8, מסתבר שאפשר גם להגדיר מאפיינים ל - DOM.
לדוגמא:
נניח שאנחנו רוצים לדעת כמה אותיות יש בדף, נוכל תמיד לכתוב פונקציה ולקרוא לה, אבל מיד נראה שב - IE8 נוכל להוסייף מאפיין בשם words לאובייקט document ולקרוא לה. איך ? פשוט מאוד.
Object.defineProperty(document, "words",
{
get: function() {
var sum = 0;
var arr = document.body.innerText.split(' ');
sum = arr.length;
for (var i = 0; i < arr.length; i++) {
if (arr[i] == '') {
sum--;
}
}
return sum - 1;
}
});
-
הפרמטר הראשון הוא על איזה אלמנט ב - DOM אנחנו רוצים להוסיף (או לשנות) מאפיין.
-
הפרמטר השני הוא שם המאפיין.
-
הפרמטר השלישי הוא מקטע של get/set שמכיל פונקצייה.
כדי לשנות מאפיין קיים ברוב המקרים נרצה לשמור את המאפיין הישן ולהוסיף עוד לוגיקה לפני ההפעלה שלו.
לדוגמא:
לכולם יצא
לעבוד עם cookies הקריאה מ - cookie היא לא נחמדה, אופצייה שנייה היא לכתוב משהו כזה.
var oldCookieProp = Object.getOwnPropertyDescriptor(document, "cookie");
Object.defineProperty(document, "cookie",
{
get: function() {
return oldCookieProp.value.split(';');
}
});
ואז הקריאה ל - cookie תמיד יחזיר את מערך העוגיות ללא צורך תמיד לעשות split.
יש עוד הרבה מעבר למה שתיארתי - תוכלו לקרוא על זה
כאן