Правильно ли так делать: Object.prototype.a_sa?
Добрый день,
if (!Object.prototype.gA) { Object.prototype.gA=function(a) { return this.getAttribute(a); } } Правильно ли так делать? Почему? Задача была сократить getAttribute() на такое gA() Спасибо. |
Нет. Во-первых, никогда не сокращай переменные - никто кроме тебя такой код читать не сможет (да и сам ты через некоторое время все забудешь). Во-вторых, прототип объекта нужно засирать nonenumerable свойствами, иначе поломаются циклы for in. В-третьих, метод getAttribute применяется к DOM-объектам и находится в HTMLElement.prototype, зачем ты всё остальное засоряешь?
|
Max_Cohen, на всякий случай повторю за Erolast: сокращать не надо. Минусов куча, а единственный плюс легко перекрывается IDE.
Потому ответ - использовать IDE с автодополнением, и написание сведётся до тех же двух букв. |
Зачем тебе getAttribute? Видимо ты не в курсе про свойства?
this.id this.className this.title this.checked this.href this.src |
danik.js, getAttribute няшнее. Свойства все в разнобой, а ровные строчки getAttribute'ов радуют глаз.:D
|
Вот так попробуй
<html> <head> </head> <body> <div id="one"> <div id="inner"></div> </div> <p id="two"></p> <script> Object.defineProperty(HTMLElement.prototype, "gA", {value: HTMLElement.prototype.getAttribute, enumerable: false}) arr=[ document.querySelector("div").gA("id"), document.querySelector("div").querySelector("div").gA("id"), document.querySelector("p").gA("id") ] alert(arr) </script> </body> </html> |
Добрый день,
Спасибо Вам за правильные ответы. Еще есть вопрос, и есть такой пример: <html> <head> <script src="script.js"type="text/javascript"></script> </head> <body> <script type="text/javascript"> console.log(_bodyWidth); </script>Сам script.js: var _bodyWidth=document.body.clientWidth;Происходит ошибка. Cannot read property 'clientWidth' of null. Как Я понял, до появления тэга body JavaScript не может определить этот тэг. Ну и понятно, свойство clientWidth. Тогда если Я сделаю так: <html> <head> <!--убрал отсюда--> </head> <body> <!--поставил сюда--> <script src="script.js"type="text/javascript"></script> <script type="text/javascript"> console.log(_bodyWidth); </script>То все хорошо. Я получаю ширину тэга body. Вопрос, а почему так происходит? Можно ли оставить тэг script в head и получить свойства clientWidth от body. Пробовал через window.onload=function(){...} добавить в script.js, но тогда нельзя в body еще раз объявить window.onload. Правильно? Спасибо. |
|
|
Добрый день,
Спасибо всем. Иду изучать и колдовать) Еще раз спасибо! |
Часовой пояс GMT +3, время: 11:07. |