Цитата:
<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, время: 15:17. |