REGISTER











Metode
#1
O metodă este pur și simplu o funcție care este atribuită valoarea de slotul unui obiect.
Spre deosebire de multe limbaje orientate obiect, nu există nici o distincție între o definiție funcție și o definiție metodă.
Mai degrabă, distincția se produce în timpul apelarii funcției, o funcție poate fi numit ca o metodă.
Atunci când este apelata ca o metodă, variabila locala standard care este setata automat la instanța obiectului de la stânga lui ".".
(Există, de asemenea, posibilitatea de a apel și de a aplica metode care pot seta aceasta în mod explicit, de anumite pachete, cum ar fi jQuery face lucruri neobișnuite cu acest lucru.)
În exemplul de mai jos, Foo este folosit ca un constructor.
Nu este nimic special cu privire la un constructor, aceasta este doar o metodă care este invocată după ce obiectul este creat aceasta este setată la obiect nou creat..
Rețineți că, în exemplul de mai jos, Foo este atribuirea de valori pur și simplu la sloturi, dintre care unele sunt functii.
Astfel, se poate atribui diferite funcții la instanțe diferite.
Nu este nici un prototip în acest exemplu.

Code:
function px () { return this . prefix + "X" ; }
function Foo ( yz ) {
this . prefix = "a-" ;
  if ( yz > 0 ) {
    this . pyz = function () { return this . prefix + "Y" ; } ;
  } else {
    this . pyz = function () { return this . prefix + "Z" ; } ;
  }
  this . m1 = px ;
}

var foo1 = new Foo ( 1 ) ;
var foo2 = new Foo ( 0 ) ;
foo2. prefix = "b-" ;

alert ( "foo1/2 " + foo1. pyz () + foo2. pyz () ) ;

foo1. m3 = px ; // atribuie funcția în sine, nu sa evaluat rezultatul, adică nu px ()
var baz = { "prefix" : "c-" } ;
baz. m4 = px ; // Nu este nevoie de un constructor pentru a face un obiect.

alert ( "m1/m3/m4 " + foo1. m1 () + foo1. m3 () + baz. m4 () );

foo1. m2 () ; // Throws an exception, because foo1.m2 doesn't exist. . foo1 m2 ();
Reply



Powered by MyBB All rights reserved
Developed with for FASTCS 2011 - 2024 FASTCS