Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.12.2014, 09:38
Аватар для Max_Cohen
Интересующийся
Отправить личное сообщение для Max_Cohen Посмотреть профиль Найти все сообщения от Max_Cohen
 
Регистрация: 23.06.2013
Сообщений: 11

Правильно ли так делать: Object.prototype.a_sa?
Добрый день,

if (!Object.prototype.gA)
{
	Object.prototype.gA=function(a)
	{
		return this.getAttribute(a);
	}
}


Правильно ли так делать? Почему?

Задача была сократить getAttribute() на такое gA()

Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 17.12.2014, 10:49
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Нет. Во-первых, никогда не сокращай переменные - никто кроме тебя такой код читать не сможет (да и сам ты через некоторое время все забудешь). Во-вторых, прототип объекта нужно засирать nonenumerable свойствами, иначе поломаются циклы for in. В-третьих, метод getAttribute применяется к DOM-объектам и находится в HTMLElement.prototype, зачем ты всё остальное засоряешь?

Последний раз редактировалось Erolast, 17.12.2014 в 11:16.
Ответить с цитированием
  #3 (permalink)  
Старый 17.12.2014, 10:58
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,495

Max_Cohen, на всякий случай повторю за Erolast: сокращать не надо. Минусов куча, а единственный плюс легко перекрывается IDE.
Потому ответ - использовать IDE с автодополнением, и написание сведётся до тех же двух букв.
__________________
29375, 35
Ответить с цитированием
  #4 (permalink)  
Старый 17.12.2014, 11:08
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Зачем тебе getAttribute? Видимо ты не в курсе про свойства?
this.id
this.className
this.title
this.checked
this.href
this.src
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #5 (permalink)  
Старый 17.12.2014, 11:46
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,495

danik.js, getAttribute няшнее. Свойства все в разнобой, а ровные строчки getAttribute'ов радуют глаз.
__________________
29375, 35
Ответить с цитированием
  #6 (permalink)  
Старый 17.12.2014, 17:37
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 09.11.2014
Сообщений: 610

Вот так попробуй
<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>
Ответить с цитированием
  #7 (permalink)  
Старый 18.12.2014, 09:47
Аватар для Max_Cohen
Интересующийся
Отправить личное сообщение для Max_Cohen Посмотреть профиль Найти все сообщения от Max_Cohen
 
Регистрация: 23.06.2013
Сообщений: 11

Добрый день,

Спасибо Вам за правильные ответы. Еще есть вопрос, и есть такой пример:
<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. Правильно?

Спасибо.
Ответить с цитированием
  #8 (permalink)  
Старый 18.12.2014, 09:53
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

https://developer.mozilla.org/en-US/...MContentLoaded
Ответить с цитированием
  #9 (permalink)  
Старый 18.12.2014, 11:41
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,495

Max_Cohen,
http://learn.javascript.ru/introduction-browser-events#назначение-обработчиков-по-стандарту
__________________
29375, 35
Ответить с цитированием
  #10 (permalink)  
Старый 18.12.2014, 14:03
Аватар для Max_Cohen
Интересующийся
Отправить личное сообщение для Max_Cohen Посмотреть профиль Найти все сообщения от Max_Cohen
 
Регистрация: 23.06.2013
Сообщений: 11

Добрый день,

Спасибо всем. Иду изучать и колдовать) Еще раз спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Извините что создаю еще одну тему, но мне нужна помощь и ваше мнение megaupload Оффтопик 11 27.05.2013 12:58
Посоветуйте новику, что я делаю не так danil-n2 Общие вопросы Javascript 5 26.04.2013 21:22
способы организации кода melky Общие вопросы Javascript 17 01.10.2011 22:57
Как правильно оформить Send() Алекс97 AJAX и COMET 20 30.10.2008 19:19
Хорошо ли так делать? Octane Общие вопросы Javascript 2 22.09.2008 21:44