mandarīnpīle Posted June 26, 2013 Report Share Posted June 26, 2013 Lai gan server side valodās bez OOP normāli neiztikt, pačolējot populāru interneta lapu JavaScript source failus tajos nemaz tā neredz OOP centienus.. Tāpat funkcijas, funkcijas.. Ar ko tas skaidrojams? JavaScript pievienotās OOP iespējas nav nemaz tik ļoti OOP lai tās izmantotu? Vai arī ikdienā nepieciešamā Javascripta funkcionalitāte parasti ir pārāk vienkārša, lai veidotu objektus? Quote Link to comment Share on other sites More sharing options...
draugz Posted June 26, 2013 Report Share Posted June 26, 2013 Man liekas javascript funkcionalitāte vēl īsti nav paredzēta OOP, tas ka teorētiski ir iespējams definēt klases nenozīmē ka tas ir ļoti labi. Katrs šāds klases objekts prasa atmiņas resursus no datora, un šeit jau ir jābūt drošam, ka mēs to atmiņu izmantojam pareizi, nevis vienkārši aizpildam klienta RAMu ar nevajadzīgu infu. Tā pati atmiņas problēma attiecas arī uz NodeJS. Manuprāt JS vislabāk ir veiksmīgi mixēt starp OOP un procedurālo, lai panēktu zelta vidusceļu. Quote Link to comment Share on other sites More sharing options...
codez Posted June 26, 2013 Report Share Posted June 26, 2013 OOP būtībā ir abstrakcijas slānis, kurš ļauj vieglāk organizēt sarežģītu kodu. Jebkura kaut cik nopietna js bibliotēka vai api bus spēcīgi būvēta uz js, piemēram: google map api: https://developers.google.com/maps/documentation/javascript/examples/icon-complex vai three.js https://github.com/mrdoob/three.js/blob/master/examples/webgl_geometry_terrain.html Kā redzams, katrs bibliotēkas elements, ir būtībā klase (js izpratnē). Tāpat OO koda organizēšana ļauj vieglāk atkārtoti izmantot kodu. Es, piemēram, pat salidzinoši mazus js kodus, organizēju obejktos: Game = {}; Game.title = "My game"; Game.init = function(){ } UI elementus es parasti veidoju kā jquery ui widgetus, kas būtībā ir arī OOP: (function($){ $.widget('ui.dialogSignin', $.ui.dialog, { options:{ title:'Sign In', //... }, _init:function(){ //... } })(jQuery); Quote Link to comment Share on other sites More sharing options...
marrtins Posted June 26, 2013 Report Share Posted June 26, 2013 jquery stils vairāk atgādina funkcionālo programmēšanas stilu, nevis OOP. Quote Link to comment Share on other sites More sharing options...
daGrevis Posted June 27, 2013 Report Share Posted June 27, 2013 Problēma ar JavaScriptu un OOP ir, ka tas nav «tīrs OOP» mūsu izpratnē, — nav klašu! http://en.wikipedia.org/wiki/Prototype-based_programming Quote Link to comment Share on other sites More sharing options...
codez Posted June 27, 2013 Report Share Posted June 27, 2013 js jau var diezgan viegli panākt klašu OOP, ieskaitot inheritance, multiple inheritance, privātos, publisko mainīgos. http://jsfiddle.net/aAXq7/ function log(s) {$("#info").append($("<div>").html(s));} function Car(){ var engineType = 2; //privātais this.color="#800" //publiskais this.getEngineType=function(){ return engineType; } } function Radio(){ this.station="FM101" } function Opel(){ Car.apply(this, arguments); //inheritance Radio.apply(this, arguments); //muiltiple inheritance this.name="Opel"; } var c=new Car(); log(c.color) log(c.getEngineType()) var o=new Opel(); log(o.color); log(o.name); log(o.station); Bet nu jebkurā gadījumā arī prototipu bāzēts OOP ir OOP. Quote Link to comment Share on other sites More sharing options...
daGrevis Posted June 27, 2013 Report Share Posted June 27, 2013 > Bet nu jebkurā gadījumā arī prototipu bāzēts OOP ir OOP. Kaut visi tā domātu... :( Quote Link to comment Share on other sites More sharing options...
spainis Posted June 27, 2013 Report Share Posted June 27, 2013 js jau var diezgan viegli panākt klašu OOP, ieskaitot inheritance, multiple inheritance, privātos, publisko mainīgos. http://jsfiddle.net/aAXq7/ function log(s) {$("#info").append($("<div>").html(s));} function Car(){ var engineType = 2; //privātais this.color="#800" //publiskais this.getEngineType=function(){ return engineType; } } function Radio(){ this.station="FM101" } function Opel(){ Car.apply(this, arguments); //inheritance Radio.apply(this, arguments); //muiltiple inheritance this.name="Opel"; } var c=new Car(); log(c.color) log(c.getEngineType()) var o=new Opel(); log(o.color); log(o.name); log(o.station); Bet nu jebkurā gadījumā arī prototipu bāzēts OOP ir OOP. parent metodes izsaukšana nezinot parent objektu? Quote Link to comment Share on other sites More sharing options...
gurkjis Posted June 28, 2013 Report Share Posted June 28, 2013 Simple Javascript Inheritance: http://ejohn.org/blog/simple-javascript-inheritance/ Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.