Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Тестовые задания по JavaScript (https://javascript.ru/forum/offtopic/18537-testovye-zadaniya-po-javascript.html)

monolithed 07.07.2011 08:28

Цитата:

Сообщение от FINoM
Прям-таки странно. Там половина не работает в последней версии хрома.

Не удивительно, диалект JavaScript как таковой реализован только в движках Mozilla Firefox, Gecko, SpiderMonkey и Rhino поэтому в Chrome это появится не раньше чем выйдет ES6.

B~Vladi 07.07.2011 08:42

Цитата:

Сообщение от FINoM
Ну, наверное, те что лучше покупаются на переднюю полку.

Когда приходят новые книги, откуда ты знаешь как они продаются, если не продавались ещё?
Цитата:

Сообщение от FINoM
В смысле градиент?

Нет, сплошные цвета.

monolithed 07.07.2011 08:52

Цитата:

Сообщение от B~Vladi
Когда приходят новые книги, откуда ты знаешь как они продаются, если не продавались ещё?

согласен, с книгами на порядок все сложней чем с продуктовыми товарами.

melky 07.07.2011 10:40

Цитата:

Сообщение от FINoM (Сообщение 112132)
Цитата:

Создать средствами HTML и CSS квадрат, равномерно залитый 4 разными цветами. Границы цветов расположены по диагонали.
В смысле градиент?

в смысле бордюр :)


только странно, при чем тут джяваскрипт
<style>
div {
   border : 70px black solid;
   border-color: red yellow gray blue;
   width : 1px;

}
</style>

<div></div>

tenshi 07.07.2011 10:48

Цитата:

Сообщение от FINoM (Сообщение 112133)
То есть число простых чисел может варьироваться? 0_o

простые числа надо выписывать, а не их число

mycoding 07.07.2011 11:15

Цитата:

Сообщение от monolithed (Сообщение 112118)
По мне, просто игра слов не более. Или мне одному так кажется?

PS: Parasitic inheritance

А всё таки это интересно

Вот небольшой пример - очень некрасивой реализации ООП.
function Transport(config){
	var config = config || {};
	this.type = "Транспорт";
	this.wheel = 0;
	this.maxVelocity = 0;
	this.velocity=0;
	this.deltaVelocity=0;
	for(var p in config){
		this[p]=config[p];
	}
}

Transport.prototype = {
	engine: 'никакой',
	isDrive:false,
	faster:function(){
		if(this.isDrive){
			if(this.velocity<this.maxVelocity){
				this.velocity+=this.deltaVelocity;
			}
			else{
				console.log(this.type+" быстрее ехать не может");
			}
		}
		else{
			console.log("Необходимо завести машину");
		}
	},
	slower:function(){
		if(this.velocity>0){
			this.velocity-=this.deltaVelocity;
		}
		else{
			console.log("Медленее ехать нельзя");
		}
	},
	drive:function(insideInvoke){
		var me = this; 
		if(!insideInvoke && me.isDrive){
			return;
		} 
		if(!insideInvoke){
			console.log(me.type+" заведена");
			me.isDrive = true;
		}
		if(me.isDrive){
			console.log('Едит '+me.type+' на '+me.wheel+' колесах. Скорость '+me.velocity+'...');
			setTimeout(function(){
				me.drive(true);
			},1000);
		}
	},
	stop:function(){
		this.isDrive = false;
	}
};

//var t = new Transport();
//t.drive();

function Car(config){
	var config = config || {};
	this.type = "Машина";
	this.wheel = 4;
	this.maxVelocity = 60;
	for(var p in config){
		this[p]=config[p];
	}
	Car.superclass.constructor.call(this);
}

Car.prototype = new Transport();
Car.superclass = Transport.prototype;
Car.prototype.deltaVelocity=10;

//var c = new Car();

function SuperCar(config){
	var config = config || {};
	this.type = "СуперМашина";
	this.wheel = 4;
	this.maxVelocity = 100;
	for(var p in config){
		this[p]=config[p];
	}
	Car.superclass.constructor.call(this);
}

SuperCar.prototype = new Car();
SuperCar.superclass = Car.prototype;
SuperCar.prototype.deltaVelocity=20;

var sc = new SuperCar();


Если не лень. Скопируйте и запустите.
Поуправляйте Супер Машиной в консоле
через
sc.drive();
sc.faster();
sc.slower();


А потом, просто для себя попробуйте реализовать
функцию extend - без подсказок из интернета(на собеседовании же не будет возможности пользоваться инетом).
для вот такого наследования
Заметка - вообще полностью весь код надо придумать самому.
Поэтому это итак очень большая подсказка.

У Вас есть три объекта A,B,C
B наследует A, ну а C наследует B.

C = extend(B,{
	constructor: function(config){
		applyIf(config,{
			h:6
		});
		B.superclass.constructor.call(this, config);
	},
	b:4,
	c:5
});

function applyIf(o, c){
	if(o){
		for(var p in c){
			if(!isDefined(o[p])){
				o[p] = c[p];
            }
        }
    }
    return o;
}

function isDefined(v){
	return typeof v !== 'undefined';
}


В итоге при вызове
console.log(new C({b:8,h:5}));

Должен получиться объект
{
   b:8,
   h:5,
   c:5
}


Не надо меня спрашивать подробности, это я так набросал.
Пример и реализацию на собеседовании Вам нужно сделать самому.

Сразу скажу, что я не сделал это.

mycoding 07.07.2011 12:01

Цитата:

Сообщение от tenshi (Сообщение 112106)
вопрос из разряда: выпишите наибольшее число простых чисел

А как это сделать?
Смотрю на
Number.MAX_VALUE и думаю...

vflash 07.07.2011 13:50

имхо extend() должен копировать только собственные свойства обьекта.

melky 07.07.2011 14:00

Цитата:

Сообщение от mycoding (Сообщение 112154)
А как это сделать?
Смотрю на
Number.MAX_VALUE и думаю...

а мне кажется, что бесконечность :)
alert ( Number.MAX_VALUE < Number.POSITIVE_INFINITY )

dmitriymar 07.07.2011 16:06

Цитата:

Сообщение от FINoM
Ну, наверное, те что лучше покупаются на переднюю полку.

те что лучше и новые в самый конец. чтоб основная масса покупателей, идя к полке с ними ,видела и остальные товары. вопрос по маркетингу это был но не по скрипту. те что самые старые и хуже всего продаются в центр-поскольку это примерно то место где покупатель ,уже отошел от улицы(переадаптировался чуть,настроился) но ещё не устал просматривать книги


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