| |
JS: NeOOPisks OOP
Ievads
OOP īss pārskats
kaste3.depth = kaste3.width * kaste3.height kaste2.width = kaste1.width kaste1.width = kaste3.depth / kaste2.height Pamatā mēs objektiņus taisām šādi.. hmm.. aha:
function tKaste(width, height, depth) { this.width = width this.height = height this.depth = depth } Tātad tā, mazi paskaidrojumiņi.. Šeit mēs nodefinējām t.s. objekta konstruktoru. Faktiski ar to pietiek iekš javascripta, lai cik tas dīvaini un stulbi nebūtu. Ērti, bet tas ir viss. Nu katrā gadījumā, šai konstruktorā tie mainīgie, kas rakstās ar this. priekšā, tie ir dotā objekta propertiji. Tu jau vari arī taisīt savējos propertijus pče noklusēšanas. Piemēram:
function tKaste(width, height, depth) { this.width = width this.height = height this.depth = depth this.color = '#cccccc' } Šeit tKaste.color neviens uzdot nevar. Nu bet nekas, iztiks, ne? Sintakse, lai radītu savus objektiņus (nu jaureālus, nevis deģeneratīvas funkcijas) it elementāra:
jaunāObjektaNosaukums = new objektaNosaukums( argumenti )
Tā, piemēram, lai uztaisītu sev mūsu kastes, varam rakstīt:
kaste1 = new tKaste(10, 20, 30) kaste2 = new tKaste( 5, 20, 10) kaste3 = new tKaste(15, 30, 15) Tā.. nu, tad, tici vai ne, tev ir pirmais objekts. Nu tagad tu ar viņa propertijiem vari darboties kā vēlies, to biš - kā ar parastiem mainīgajiem. Mainīt, skatīties un vēl šo to darīt līdz riebumam. Nu un kad tu esi sapratis, čo pa čom ar tiem propertijiem, varam arī jau sākt domāt par metodēm. Ak, kas tās tādas? Nu es jau kaut ko pieminēju tādu, patin kaut kur biš apakaļ. Moš pat uz sākumu. Metožu radīšanas process arī nemazām nav tik ļoti sāpīgs, kā OOP izklausās:
functino objektaNosaukums(argumenti){ this.īpašībasNosaukums = kautkādavērtība this.metodesNosaukums = metodesFunkcija } functino metodesFunkcija(parametri){ // ieraksti kaut ko priekš // sava jaunā objektiņa } MetodesFunkcija šiverējās pa tevis izdalīto atmiņu tieši tāpat kā visas pārējās funkcijas, ja neskaita to, ka, izsaucot jamo, priekšā jāliek objekta nosaukums (piem.: Kaste1.Mirsti())
Objekti un layeri
ns4 = (document.layers)?true:false ie4 = (document.all)?true:false if (ns4) layer1 = document.layer1div else if (ie4) layer1 = layer1div.style ..., kas ir identisks ar šamo:
ns4 = (document.layers)?true:false ie4 = (document.all)?true:false if (ns4) layer1 = document.layers["layer1div"] else if (ie4) layer1 = document.all["layer1div"].style Šajā gadījumā layer1 ir tāds kā referencējošais mainīgais, kurš norāda uz layer1div layera css propertijiem. Nu tad skaties, kā mēs ar to tiekam galā:
functinon layerObj(id) { if (ns4) this.css = document.layers[id] else if (ie4) this.css = document.all[id].style } Šajā gadījumā tu kūli un lēti un elementāri vari inicializēt savus pointera variabļus, nerakstot kaudzi rindiņu ar kodu:
layer1 = new layerObj("layer1div")
Nu un, kad tas izdarīts, paveras plašs lauks: layer1.css.width, layer1.css.visibility, ... Protams, mēs varam iet vēl tālāk un organizēt tādu lietu, kā apvienoto x un y koordinātu, jo kā zinām, netskeipā ir left un top propertiji, bet iekš ie - pixelLeft un pixelRight ... Nu tad skaties un mācies:
functino layerObj(id) { if (ns4) { this.css = document.layers[id] this.x = this.css.left this.y = this.css.top } else if (ie4) { this.css = document.all[id].style this.x = this.css.pixelLeft this.y = this.css.pixelTop } }
Nu tad tasiām Metodes
function layerObj(id) {
Nu un tālāk viss notiek tā kā iedomāts:if (ns4) { this.css = document.layers[id] this.x = this.css.left this.y = this.css.top } else if (ie4) { this.css = document.all[id].style this.x = this.css.pixelLeft this.y = this.css.pixelTop } this.moveBy = layerObjMoveBy this.moveTo = layerObjMoveTo } function layerObjMoveBy(x,y) { this.x += x this.css.left = this.x this.y += y this.css.top = this.y } function layerObjMoveTo(x,y) { this.x = x this.css.left = this.x this.y = y this.css.top = this.y }
layer1 = create layerObj("layer1div") layer1.moveBy(-5, 10) layer1.moveTo(100, 100) Šamais viss ir īss ieskats iekš js objektiem, kā tos taisīt, un ceru, ka tas tev biš (vismaz) izlīdzēja. Jo, kā esmu novērojis, pārsvarā ļauži raksta savējās procedūras laprātāk, nekā izmanto citu rakstītās. Cya in hell, coder. |