Jump to content
php.lv forumi
  • 0

JavaScript OOP


Jackal

Question

Meklējot par JavaScript OOP esmu atradis divus veidus, kā var veidot objektus

 

1.

function HelloWorld(){
 this.DisplayGreeting = function(){
  document.write("Hello, world!");
 }  
}

 

 

2.

function HelloWorld(){
this.DisplayGreeting  = DisplayGreeting;

 function DisplayGreeting (){
  document.write("Hello, world!");
 }  
}

 

Ja jau ir divi veidi, tad ir jābūt kādai atšķirībai. Kāda tad ir tā galvenā atšķirība? Ātrdarbība vai kas cits? Kāpēc izmantot vienu vai otru veidu?

 

Un vēl viens jautājums, ja es izmantoju otro variantu un gribu kādā objekta metodē izsaukt citu šī paša objekta metodi, vai tad arī ir jāizmanto "this" kā zemāk esošajā piemērā?

 

function HelloWorld(){
this.Greeting  = Greeting;
this.DisplayText  = DisplayText;

 function Greeting (){
  document.write("Hello, world!");
 }

function DisplayText (){
  this.Greeting ();
 }
}

Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

vēl prototype keywordu aizmirst nevajag.

 

visi hello worldi ir padumji. ja tos Greeting() un DisplayText() liktu ārpus HelloWorld(){}, tad sanāktu kaut kas līdzīgs header failam no c valodām, vai sākums tam kā būvēt savu IoC frameworku javascriptā. js ir kā mākoņi ne šis ne tas, bet ja vajag var mēģināt izskatīties pēc dajebkā :)

Link to comment
Share on other sites

  • 0

Negribējās taisīt jaunu tēmu tāpēc jautāšu tepat. Kā ir ar enkapsulāciju iekš javascript? Cik saprotu, tad publiskās un privātās metodes var panākt tā kā ir zemāk esošajā piemērā. Varbūt ir kāds cits, labāks variants?

 

 

function klase(){
  var obj = new Object();

  //private methods
  obj.show = function(value){

  alert(value);


  }

  //public methods
  this.display = function(value){
  obj.show(value);
  }
}


var klase = new klase();
klase.display("text");

Link to comment
Share on other sites

  • 0

Cits variants. Labāks/sliktāks - gaumes jautājums.

function klase(){
  //private methods
  var show = function(value){
  alert(value);
  }
  function show2(value){
  alert(value);
  }

  //public methods
  this.display = function(value){
  show(value);
  show2(value);
  }
}


var klase = new klase();
klase.display("text");

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...