Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Я нашел скрытый бонус JavaScript (https://javascript.ru/forum/misc/17549-ya-nashel-skrytyjj-bonus-javascript.html)

FINoM 24.05.2011 18:47

Цитата:

Сообщение от Sweet
Идентификаторы timeout-ов наверное.

Точно.
Цитата:

Сообщение от Sweet
Если это имеет значение, несмотря на некроссбраузерность, то проверить не проблема

Это был не вопрос :)

Sweet 24.05.2011 19:27

Цитата:

Сообщение от FINoM
Это был не вопрос

Точно:)

dmitriymar 24.05.2011 21:41

подобный пример идёт по моему здесь с циклом и таймером
http://www.addconf.ru/event.sdf/ru/a...ySoshnikov/368

FINoM 25.05.2011 01:49

Цитата:

Сообщение от dmitriymar
http://www.addconf.ru/event.sdf/ru/a...ySoshnikov/368

1. То есть смело можно расширять прототипы (если у прототипа задать свойство с enumerable:false)? Просто других причин я не вижу (кроме идеологических).
2. До сих пор не понимаю, зачем использовать геттер следующим образом:
o = {
  a:4,
  b:5,
  get sum() {
    return this.a+this.b;
  }
}

3. Что за хуита?



"Я очень радовался, когда понял что это такое" - немного измененная цитата автора.
Это опечатка и вместо x должен быть k?

FINoM 25.05.2011 01:59

Немного неприятно, что не идет речи о таких фичах, которые были в ES4:
1. Классы
2. Многострочные строки без использования дурацких конкатенаций и не менее идиотского экранирования переносов
"""Я
большая
строка"""

3. Комменты в регулярках
4. Суффиксы (Suffixes on numeric literals denote their type: -7i, 1u, 37d, 14.5m.)
5. "Заполняторы"
[i * i for (i in naturals(10))]

...
Это то что бросилось в глаза (переопределение операторов и прочие спорные моменты не в счет)

poorking 25.05.2011 02:31

FINoM,
Цитата:

Сообщение от FINoM
1. То есть смело можно расширять прототипы (если у прототипа задать свойство с enumerable:false)? Просто других причин я не вижу (кроме идеологических).

Кроме того что свойства прототипа в for in перечисляется есть риск что затрешь чье то расширение или твое затрут. Enumerable решает проблему первого, но второе решено только частично: твое свойство теперь не затрут (если задать только чтение), но надо все равно искать обход того, что имя создаваемого расширения уже может быть занято и у него стоит writable true.

Цитата:

Сообщение от FINoM
2. До сих пор не понимаю, зачем использовать геттер следующим образом:

Получается некое статическое свойство как, например length, мне кажется можно удобно использовать.

3. Скорее всего опечатка

FINoM 25.05.2011 03:51

Цитата:

Сообщение от poorking
Получается некое статическое свойство как, например length, мне кажется можно удобно использовать.

Метод тоже удобно использовать.

poorking 25.05.2011 04:24

FINoM,
Я обратного и не утверждал, но это не одно и тоже, думаю что геттеры и сеттеры очень удобная штука. К примеру какому нибудь свойству, можно задать такой сеттер, что значения присваивать можно будет разных типов данных например, сеттер будет анализировать и приводить к единой системе. И гораздо будет удобнее писать obj.prop = 5, например, чем obj.prop.set(5)

Простой пример: (правда я не проверял ничего, просто наобум, но если так пользоваться можно будет, то это здорово)
var foo = {
	val: 0,
	set dist(d){
		if(typeof d == "number"){
			this.val += d;
		}
		if(typeof d == "string"){
			switch(d.replace(/\d*/, "")){
				case "km":
					this.val += +d.replace("km", "") * 1000 * 100 * 10;
				break;
				/*
				case ...
			
				*/
			}
		
		}
	},
	get dist(){
		return this.val + " millimeters";
	}

}

//а пользоваться очень удобно

foo.dist += "5km";

alert(foo.dist); //5000000 millimeters

Kolyaj 25.05.2011 10:59

Цитата:

Сообщение от FINoM
2. Многострочные строки без использования дурацких конкатенаций и не менее идиотского экранирования переносов

Конкатенация удобней. В многострочных строках проблема с отступами: или отступы не делаем, тогда ломается вложенность кода, или делаем, тогда появляются лишние пробелы в строках.


Цитата:

Сообщение от FINoM
3. Комменты в регулярках

А зачем?

FINoM 25.05.2011 13:04

Цитата:

Сообщение от Kolyaj
В многострочных строках проблема с отступами

Если проблема красивости кода для вас настолько важна, табы можно реплейсить.
Цитата:

Сообщение от Kolyaj
А зачем?

Дык, удобно же:
/# The protocol is an alpha name followed by colon and double slash 
     (?P<protocol> [a-z]+)  
 :     
 /\/\     
     # The host is two or more dot-separated alpha names 
     (?P<host> [a-z]+ (?: \. [a-z]+ )+) 
     # The path is optionally present 
     (?P<path> (?: \/ [a-z]+ )* \/? ) 
    /x


Часовой пояс GMT +3, время: 06:22.