Цитата:
<div id=a>0</div>
<script>
a=document.getElementById('a');
/* тут пропущенный кусок моего кода */
a=document.getElementById('a');
b = {p:1};// если не создать объект - error
b.watch.call( a, 'innerHTML', function(prop, oldval, newval){
if(!oldval) oldval = a[prop];
// вырезаем новый кусок
newval = newval.substring( newval.indexOf(oldval)+1 );
return oldval+newval.toUpperCase();
} );
a.onclick = function(){ a.innerHTML += 'abc' }
// всё хорошо. при клике к содержимому
// будет добавляться буква 'abc'
// всё статично
a.onclick = function(){ a.innerHTML += 'abc' };
</script>
|
А кто сможет подкинуть задачу на прототипы и наследование?
Нужно попрактиковаться. Спасибо! |
Цитата:
вот код, который заготовлен. есть три класса(пардон, функции) и соотв. им экземпляры. у каждого объекта свой конструктор, свои свойства. Свой прототип не у всех.
// Parent "class"
function Parent( a, b, c){
this.a=a;
this.b=b;
this.c=c;
};
function ParentPrototype (){
this._a = function(){ };
this. _b = function(){ };
this._c = function(){ }
};
Parent.prototype = new ParentPrototype();
// Child "class"
function Child( d, e, f ) { this.d = d; this.e = e; this.f = f; };
// More "class"
function More( g ) {
this.g = g;
this.h = function(){ };
};
function MorePrototype(){
_g = function(){ };
};
More.prototype = new MorePrototype();
создаем экземпляры. var parent = new Parent( 'a','b','c' ); var child = new Child( 'd','e','f' ); var more = new More( 'g' ); Задача : написать функцию mix, которая будет возвращать новый класс(объект), конструктор которого будет принимать все аргументы из конструкторов всех трёх переданных в неё аргументов. (ЩИТО?)
var Mixed = mix( parent, child, more );
var obj = new Mixed(
'a','b','c', // Parent
'd','e','f', // Child
'g' // More
);
а так же организовывать такой доступ к свойствам\методам переданных в неё объектов (наследие) // Parent obj._a(), obj._b(), obj._c(); // Mix obj.g; obj.h(); typeof obj._g === 'undefined' // => true из последнего (третьего) объекта методы\свойства прототипа наследоваться не будут. ... надеюсь, вам понравится :) старался |
> А кто сможет подкинуть задачу на прототипы и наследование?
написать фабрику классов так, чтобы каждый класс можно было использовать и как фабрику, то есть следующие фрагменты должны делать одно и тоже: var Obj = new Factory(protoObj) var AnotherObj = Factory(protoObj) // Obj === AnotherObj var obj = new Obj(1,2,3) // obj instanceof Obj var obj = Obj(1,2,3) // obj instanceof Obj параметры указываемые при создании объекта, допустим, должны быть переданы методу init нового объекта в полном объёме (их может не быть, а может быть аж более 9000), если он определён. если не определён, то бросить исключение, мол "не знаю что с параметрами делать" |
> ... чтобы при клике по div к его innerHTML прибавлялись не 'abc', а 'ABC' ?
> работать эта задачка будет только в FF (версия - хз, свежая). ну, в такой формулировке и для ие есть решение ;-) |
Цитата:
|
угу, только практической ценности никакой..
|
Цитата:
<div id="a">0</div>
<script>
var a = document.getElementById('a');
var t = a;
a = document.createElement('span');
a.innerHTML = t.innerHTML;
t.onclick = function() {
a.onclick();
t.innerHTML = a.innerHTML.toUpperCase();
}
a.onclick = function(){ a.innerHTML += 'abc';};
</script>
про сохранение значения а не упоминалось вроде, хотя наверное плохо что он не сохраняется. ну через дум моно и это предусмотреть |
| Часовой пояс GMT +3, время: 14:18. |