Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 15.11.2012, 02:41
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

пол 6го утра, мне сейчас всё кажется прикольным.
всё я баиньки.
__________________
Лучше калымить в гандурасе чем гандурасить на колыме
Ответить с цитированием
  #22 (permalink)  
Старый 15.11.2012, 04:01
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

https://github.com/kriskowal/es5-shim
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #23 (permalink)  
Старый 15.11.2012, 10:02
Аспирант
Отправить личное сообщение для bFree Посмотреть профиль Найти все сообщения от bFree
 
Регистрация: 19.08.2008
Сообщений: 42

Цитата:
То есть ты не должен создавать ни какие промежуточные анонимные функции внутри метода addListener. так как это быдлокод.
Не будь таким категоричным. Иногда это необходимо.
Ладно, я вас понял. Если написать bind для ишака, то можно вполне сносно работать.

Спасибо за ответы
Ответить с цитированием
  #24 (permalink)  
Старый 15.11.2012, 10:39
Аспирант
Отправить личное сообщение для bFree Посмотреть профиль Найти все сообщения от bFree
 
Регистрация: 19.08.2008
Сообщений: 42

iMaxmaxmaximus, само-собой в контексте )
Просто когда по незнанию писал все в конструкторе, то мой способ решал вопрос и я перестал задумываться об этом. Потом вот всплыла эта интересная особенность ecma
Ответить с цитированием
  #25 (permalink)  
Старый 17.11.2012, 18:46
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

> То есть ты не должен создавать ни какие промежуточные анонимные функции внутри метода addListener. так как это быдлокод.

bind как раз и создаёт "промежуточную анонимную функцию". причём делает это _каждый раз_.
__________________
.ня
Ответить с цитированием
  #26 (permalink)  
Старый 17.11.2012, 20:56
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

Сообщение от bFree Посмотреть сообщение
Нет. Просто хочу, чтобы можно было в коллбеках использовать указатель на объект безо всяких .bind и других доп. конструкций.
идея взята из питона:

<script>


function Method( func ){
    return function Method_instance( ){
        var args= [ this ].concat( [].slice.call( arguments ) )
        return func.apply( null, args )
    }
}

function Trait( scheme ){
    var trait= function Class_trait( ){
        throw new Error( 'Trait can not be instantiate. Create a Class, please.' )
    }
    trait.scheme= scheme
    return trait
}

function Class( scheme ){
    var factory= function Class_factory( ){
        var obj= new Instance
        var init= obj.Class_init
        if( init ) init.apply( obj, arguments )
        return obj
    }
    var proto= factory.prototype
    factory.scheme= scheme
    scheme( proto, factory )
    
    var Instance= function Class_Instance( ){ }
    Instance.prototype= proto
    
    for( var key in proto ){
        if( !proto.hasOwnProperty( key ) )
            continue
        
        var value= proto[ key ]
        if( typeof value === 'function' )
            value= Method( value )
        
        proto[ key ]= value
    }
    
    return factory
}

// проверяем:

var Man= Class( function Man_scheme( man, Man ){
    Man.toString= function( ){
        return 'Man'
    }
    
    man.name= ''
    
    man.Class_init= function( man, name ){
        man.name= name
    }
    man.toString= function( man ){
        return 'Man: ' + man.name
    }
})

var Screamer= Trait( function Screamer_scheme( screamer, Screamer ){
    screamer.scream= function( screamer ){
        alert( screamer + '!' )
    }
    screamer.screamOn= function( screamer, eventName ){
        window.addEventListener
        (   eventName
        ,   function( event ){
                screamer.scream()
            }
        ,   false
        )
    }
})

var Baby= Class( function Children_scheme( baby, Baby ){
    Man.scheme.apply( null, arguments )
    Screamer.scheme.apply( null, arguments )
    
    Baby.toString= function( ){
        return 'Baby'
    }
    
    baby.toString= function( children ){
        return 'Baby: ' + children.name
    }
})

var jim= Baby( 'Jim' )
jim.screamOn( 'load' )

</script>
__________________
.ня

Последний раз редактировалось tenshi, 17.11.2012 в 21:05.
Ответить с цитированием
  #27 (permalink)  
Старый 17.11.2012, 21:02
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

Сообщение от iMaxmaxmaximus Посмотреть сообщение
это делает бинд, а не ты! ты не должен создавать РУКАМИ промежуточную функцию потому что это смотрится по уебански.
хороший аргумент, чо
вот только если использовать в качестве колбэка функцию для этого не предназначенную - будет по уебански работать, что гораздо хуже. а если заводить для колбэка отдельную функцию, то какая разница описывать её методом объекта или замыканием внутри другого метода?
__________________
.ня
Ответить с цитированием
  #28 (permalink)  
Старый 17.11.2012, 22:09
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

... и как только топик стартер столкнулся с этим вопросом, он начал постигать функциональную природу JS
Ответить с цитированием
  #29 (permalink)  
Старый 17.11.2012, 22:27
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

> че за херь? обрами нормальными тегами [js]

тебе надо - ты и обрамляй)


> разница в красоте кода. какая разница писать очевидным кодом или не очевидным? биндинг функции к контексту это процедура, и она имеет название, она должна быть где-то описана и потмо вызвана. она не должна быть в коде без названия если это конечно не быдлокод, в данном случае мы выносим её в метод бинд.

у тебя биндинг головного мозга) вот я привёл пример кода, куда ты тут всунешь свой bind и зачем?
__________________
.ня
Ответить с цитированием
  #30 (permalink)  
Старый 17.11.2012, 22:32
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

ну и дурак)
__________________
.ня
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование классов в JavaScript devote Ваши сайты и скрипты 70 01.02.2013 17:17
Рандомный class или id fAmOus Элементы интерфейса 4 14.07.2012 14:28
Uncaught ReferenceError: Class is not defined igshul Javascript под браузер 3 24.04.2012 11:49
Заменить id на class klev2004 Общие вопросы Javascript 0 05.04.2012 16:03
Cannot instantiate non-existent class: DOMDocument Beton-Karton Events/DOM/Window 0 02.03.2011 12:01