Правильно ли так делать: 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, время: 18:22. |