Предполагается, что вы ожидаете следующую функциональность:
$("ul.nav > li > a").hover(
function(e) {
$('ul.nav > li > a.on-hover').removeClass('on-hover');
$(this).addClass('on-hover');
},
function(e){
//If you expecting to hide on-hover-out as well, uncomment the below line
//$('ul.nav > li > a.on-hover').removeClass('on-hover');
});
См. В действии: http://jsfiddle.net/kn761qgL/ и подтвердите.
Да конструктора вызывают, когда объект создается.
Небольшой пример полноценности конструктора - это
class Bar
{
// The variable we will be using within our class
var $val;
// This function is called when someone does $foo = new Bar();
// But this constructor has also an $var within its definition,
// So you have to do $foo = new Bar("some data")
function __construct($var)
{
// Assign's the $var from the constructor to the $val variable
// we defined above
$this->val = $var
}
}
$foo = new Bar("baz");
echo $foo->val // baz
// You can also do this to see everything defined within the class
print_r($foo);
ОБНОВЛЕНИЕ: вопросом, который также задают, почему это должно использоваться, реальный пример, является класс базы данных, где Вы называете объект с именем пользователя и паролем и таблицей для соединения с, с которым соединился бы конструктор. Затем у Вас есть функции, чтобы сделать всю работу в той базе данных.
Конструктор позволяет Вам удостоверяться, что объект помещается в конкретное состояние, прежде чем Вы попытаетесь использовать его. Например, если Ваш объект имеет определенные свойства, которые требуются, чтобы он использовался, Вы могли инициализировать их в конструкторе. Кроме того, конструкторы позволяют эффективному способу инициализировать объекты.