Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   3 раза не делай,а потом делай! (https://javascript.ru/forum/misc/24563-3-raza-ne-delajj-potom-delajj.html)

Livaanderiamarum 06.01.2012 05:43

3 раза не делай,а потом делай!
 
Хотите функцию напишу типа сколько то раз при вызове не делай, а потом делай))

типа

not(call,10)

будет возвращать функцию которая первые 10 раз при вызове не выполнится, а остальные разы будет выполняться)))

или лучше так сделать?
call.not(10)

или наоборот )) метод only(8)
типа сработать только первые 8 раз когда будут вызывать, а потом самоуничтожиться)


при чем так, чтобы можно было использовать в выражениях)))))))))))

Aetae 06.01.2012 05:46

Не, не хотим.

Livaanderiamarum 06.01.2012 05:50

Кому не слабо кроме меня?)

Livaanderiamarum 06.01.2012 06:09

Цитата:

Сообщение от Aetae (Сообщение 148284)
Не, не хотим.

ты с собой на Вы)?

Livaanderiamarum 06.01.2012 06:14

Нет, серьезно, это сложно, я сливаться начал пока, думаю как функции идентефицировать

Livaanderiamarum 06.01.2012 06:26

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

вопрос. как определить контекст функции, иными словами я хочу чтобы метод ОТЛИЧАТ функцию вызванную из GO допустим и вызванную из другой функции, по методу значению this в функции?

Livaanderiamarum 06.01.2012 06:29

Иными словами есть 2 стадии сравнения функций выражений - по контексту, второй, если контексты равны, более затратный способ это по тексту функций.

Livaanderiamarum 06.01.2012 06:33

function q() {
	nya()
}

function w() {
	nya()
}

function nya() {
	log(this)
}

q()
w()


но вот тут официально функция ня равна функции ня, даже по контексту.
Как думаете стоит ли различать их для моих методов?

Aetae 06.01.2012 06:35

лолшто?
function not(func,n){
  return function(){
    if(--n<0)return func.apply(this, arguments)
  }
}

Livaanderiamarum 06.01.2012 06:47

Цитата:

Сообщение от Aetae (Сообщение 148291)
лолшто?
function not(func,n){
  return function(){
    if(--n<0)return func.apply(this, arguments)
  }
}

твоя not действует на всю функцию целиком, хаха, какой гениальный ход от я то не подумал!)

если у тебя 2 цикла в одном ты хочешь чтобы функция начала работать на 3 раз, в другом на 7 )) нужно разделять счетчики)

+ лучше сделать манкипатчинг и добавить not в прототип функций) ведь мы этот not() вообще делаем для удобства)) а писать func.not(3) куда удобней))



а вообще .not(2) будет означать следущее:

ВОТ В ЭТОМ МЕСТЕ функция начнет работать только с третьего раза!

Хотя ты прав, можно разделить на not и notHere кстати) классная идея)


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