Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (1)

Наибольший вклад в теги

Все теги (10)

Лучшие ответы пользователя

Все ответы (9)
  • ООП в Javascript

    @humblegenius
    function С(){
        this.a = 100; 
        // this - это новый объект, который будет присвоен переменной o.
        // т.е. свойство "a" - это свойство создаваемого объекта
    }
    С.prototype.b = 200;
    //С - формально  это функция, логически у нас - это класс. Любая функция имеет прототип, с помощью которого мы можем добавлять свойства и методы для класса
    //т.е. свойство "b" - это свойство прототипа, которое наследуется при создании объекта класса
    var o = new C();


    Теперь немного практики:
    var CThis;
    function C(){
        alert(this.b); // 200 (b - уже есть, т.к. это свойство прописано в прототипе)
        this.a = 100;
        CThis=this; // сохраним для исследований
    }
    C.prototype.b = 200; // дополняем в класс новое свойство
    var o = new C();
    
    alert(CThis == o); //true 
    alert(o.prototype); //undefined (у объекта нет прототипа)
    alert(o.constructor==C); //true (у объекта есть конструктор)
    alert(o.constructor.prototype==C.prototype); //true
    
    Ответ написан
    Комментировать
  • Selenium Webdriver + ChromeDriver — баги в работе с русскими буквами?

    @humblegenius
    Это скорее всего из-за того, что селениум пытается эмулировать нажатие каждой кнопки и не все клавиши успвают прэмулрватья. Подобные глюки в IE драйвере решал отключением нативного управления браузером («EnableNativeEvents = false»):
    new OpenQA.Selenium.IE.InternetExplorerDriver(
        new OpenQA.Selenium.IE.InternetExplorerOptions {
    				IntroduceInstabilityByIgnoringProtectedModeSettings = true,
    				EnableNativeEvents = false
        }
    )
    

    Посмотрите, может для Хрома тоже есть подобная опция.
    Ответ написан
    2 комментария
  • Кто хочет написать скрипт для сбора статистики с первого Хабракампа?

    @humblegenius
    Вот можно выполнить такой js. И сообщения сгрупируются по вопросам и ответам, а так же появится «Топ Плюсов» и «Топ Вопросов». Но правда жутко тормозит при выполнении его в консоли firebug. И с внешним видом я не сильно заморачивался.
    {
    var plusArr={},questArr={};
    $('#comments > div.comment_item').each(function(i,el){
        
    	el=$(el);
    	var r=el.children('div.reply_comments'),
    		rb=el.children('div.reply'),
    		m=el.children('div.message'),
    		info=el.children('div.info'),
    		qs=r.children('div.comment_item'),
    		show=$('<a>Вопросы</a>').insertAfter(m),
    		user=$('a.username',info).text(),
    		score=parseInt($('span.score',info).text());
    
    	
    	el.css('border','1px solid green');
    	r.hide();
    	rb.hide();
    	show.toggle(function(){
    			r.show();rb.show();
    		},function(){
    			r.hide();rb.hide();
    	});
    	$('a.reply',rb).text('Спросить');
    	qs.each(function(i,el){
    		el=$(el);
    		var r=el.children('div.reply_comments'),
    			rb=el.children('div.reply'),
    			m=el.children('div.message'),
    			info=el.children('div.info'),
    			user=$('a.username',info).text(),
    			show=$('<a>Ответы</a>').insertAfter(m),
    			localscore=0;
    		el.css('border','1px solid blue');
    		r.hide();
    		rb.hide();
    		show.toggle(function(){
    				r.show();rb.show();
    			},function(){
    				r.hide();rb.hide();
    		});
    
    		$('div.info:has(a.username:[text="'+user+'"]) span.score',r).each(function(i,el){
    			localscore+=parseInt($(el).text());
    		});
    		score+=localscore;
    		
    		show.text('Ответы ('+r.children('div.comment_item').length+')');
    		var stat='';
    		stat+='<span> За ответы:'+((localscore>0)?'+':'')+localscore+'</span>';
    		$(stat).appendTo(info);
    		
    		if(!questArr[user]) questArr[user]=1;
    		else questArr[user]++;
    
    	});
    	
    	show.text('Вопросы ('+qs.length+')');
    	var stat='';
    	stat+='<span> За ответы:'+((score>0)?'+':'')+score+'</span>';
    	$(stat).appendTo(info);
    	
    });
    
    
    var getTop =function(obj,n){
    	var a=[];
    	for(var i in obj)
    		a.push({n:i,v:obj[i]});
    	a.sort(function(a,b){return b.v-a.v;});
    	return a.slice(0,n);
    }
    var makeTopHtml=function(a){
    	for(var i=0,n=a.length;i<n;i++){
    		var o=a[i];
    		a[i]=o.n+': '+o.v;
    	}
    	return a.join(', ');
    }
    
    
    $('#comments div.info').each(function(i,el){
    	var info=$(el),
    		score=parseInt($('span.score',info).text());
    	if(score!=0){
    		var user=$('a.username',info).text();
    		if(!plusArr[user]) plusArr[user]=0;
    		plusArr[user]+=score;
    	}
    });
    var stat='';
    stat+='<div> Топ Плюсов:'+makeTopHtml(getTop(plusArr,10))+'</div>';
    stat+='<div> Топ Вопросов:'+makeTopHtml(getTop(questArr,10))+'</div>';
    $(stat).insertBefore($('#comments'));
    }
    
    Ответ написан
    1 комментарий
  • Преобразование canvas в gif формат на javascript

    @humblegenius Автор вопроса
    Пришлось разобраться самому :)
    habrahabr.ru/post/173773/
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (1)