 
      
    JavaScript
    2
    Вклад в тег
    
      
      
    
  
  
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
new OpenQA.Selenium.IE.InternetExplorerDriver(
    new OpenQA.Selenium.IE.InternetExplorerOptions {
				IntroduceInstabilityByIgnoringProtectedModeSettings = true,
				EnableNativeEvents = false
    }
)
{
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'));
}