Windows Script Components  

Elemento <property>

Declara una propiedad.

<property name="nombreDePropiedad" [internalName="variableDePropiedad"] />

– o bien –

<property name="nombreDePropiedad">
   <get [internalName="nombreDeFunciónget"] />
   <put [internalName="nombreDeFunciónput"] />
</property>

Argumentos

nombreDePropiedad
El nombre de la propiedad que se va a exponer. A menos que se indique un atributo internalName, este nombre debe coincidir con el nombre de una variable global que se utilizará para contener el valor de la propiedad.
variableDePropiedad
(Opcional) El nombre de la variable global del elemento <script> del archivo de scriptlet que contendrá el valor de nombreDePropiedad. Si no incluye el atributo internalName, el valor de la propiedad se mantiene en una variable que se llama igual que nombreDePropiedad. Si especifica el atributo internalName, podrá utilizar nombres distintos para la propiedad y su correspondiente variable global.
nombreDeFunciónget
(Opcional) El nombre de un procedimiento que se utilizará para leer el valor de la propiedad. Si incluye el elemento <get> pero no el elemento <put>, la propiedad será de sólo lectura. Si incluye un elemento <get> pero no especifica un atributo internalName, el método que se utilizará para leer el valor de la propiedad deberá tener el mismo nombre de la propiedad más el prefijo get_ (por ejemplo, get_apellido).
nombreDeFunciónput
(Opcional) El nombre de un procedimiento que se utilizará para escribir el valor de la propiedad. Si incluye un elemento <put> pero no un elemento <get>, la propiedad será de sólo escritura. Si incluye un elemento <put> pero no especifica un atributo internalName, el método que se utilizará para escribir el valor de la propiedad debe tener el nombre de la propiedad más el prefijo put_ (por ejemplo, put_apellido).
Sugerencia   En XML, puede implementar elementos que no tengan contenido (como el elemento <property> element) si cierra el elemento con />.

Observaciones

Las propiedades se pueden exponer como valores simples. En ese caso, la propiedad se trata como una variable global dentro del archivo componente de secuencia de comandos.

También puede implementar propiedades como procedimientos (funciones o subrutinas), que permitan calcular un valor de propiedad y controlar si una propiedad es de sólo lectura, de escritura y lectura o de sólo escritura. Con esta técnica, las propiedades se implementan como un procedimiento (función o subrutina) en un elemento <script> independiente. El elemento <property> asigna el nombre de la propiedad a los procedimientos que se utilizan para implementarla. Los nombres de los procedimientos deben coincidir con los nombres internos que se especifiquen en el elemento <property>.

Cuando se llama a nombreDeFunciónput se pasa un argumento que contiene el valor al que se desea establecer la propiedad.

Además de sintaxis estándar mostrada arriba, puede utilizar una notación abreviada para especificar información que de otro modo tendría que agregar usando etiquetas secundarias. Por ejemplo, para declarar una propiedad con un descriptor de acceso "get" y otro "put" con el mismo nombre que la propiedad, puede usar la siguiente sintaxis:

<property name="miPropiedad" get put/>

cuya funcionalidad es equivalente a:

<property name="miPropiedad">
    <get/>
    <put/>
</property>

Si desea nombrar explícitamente los descriptores de acceso de forma diferente a los predeterminados, puede usar la siguiente sintaxis:

<property name="miPropiedad" get="comprobarget" put="comprobarput"/>

Para especificar una propiedad predeterminada, incluya el atributo dispId="0" en el elemento <property>. Para obtener más información, consulte Exponer propiedades.

Ejemplo

El siguiente fragmento de componente de secuencia de comandos muestra la definición de cuatro propiedades (apellido, edad, fechaDeNacimiento y estadoc). La propiedad apellido es un valor simple. La propiedad edad es de sólo lectura y se implementa con la función leerEdad. La propiedad fechaDeNacimiento es de lectura y escritura y se implementa con las funciones leerFDN y escribirFDN. Finalmente, la propiedad estadoc se implementa con las funciones predeterminadas get_estadoc y put_estadoc.

Nota   Es necesario incluir una sección CDATA para hacer opaca la secuencia de comandos del elemento <script>. Para obtener más información, consulte Archivos de componentes de secuencia de comandos y compatibilidad XML.
<public>
   <property name="apellido"/>
   <property name="edad">
      <get internalName="leerEdad"/>
   </property>
   <property name="fechaDeNacimiento">
      <get internalName="leerFDN"/>
      <put internalNme="escribirFDN"/>
   </property>
   <property name="estadoc">
      <get/>
      <put/>
   </property>
</public>

<script language="VBScript">
<![CDATA[
Dim apellido   ' Propiedad de lectura y escritura (sin funciones).
Dim gFDN   ' Variable global variable para almacenar la fecha de nacimiento.
Dim gEstadoC   ' Variable global para almacenar el estado civil.

Function leerFDN()
   ' Obtiene el valor de la propiedad fechaDeNacimiento.
   leerFDN = gFDN
End Function

Function escribirFDN(nuevaFDN)
   ' Establece el valor de la propiedad fechaDeNacimiento.
   If isDate(gFDN) Then
      ' Comprobación de errores.
      gFDN = nuevaFDN
   End If
End Function

Function leerEdad()
   ' Calcula la propiedad de sólo lectura edad.
   If isDate(gDOB) Then
      fdnM = DatePart("m", gFDN)
      fdnD = DatePart("d", gFDN)
      fdnA = DatePart("yyyy", gFDN)
      hoyA = DatePart("yyyy", Date)
      edad = hoyA - fdnA

      ' Ajustar si todavía no se han cumplido los años este año.
      cumplir = DateValue(fdnM & "/" & fdnD & "/" & hoyA)
      If DateDiff("d", cumplir, DateValue(Date)) < 0 Then
         edad = edad - 1
      End If
      leerEdad = edad
   End If
End Function

Function get_estadoc()
   ' Lee el valor de la propiedad estadoc.
   get_estadoc = gEstadoC
End Function

Function put_estadoc(s)
   ' Escribe el valor de la propiedad estadoc.
   If  s = "C" Or s = "S" Then
      gEstadoC = s
   Else
      gEstadoC = "?"
   End If
End Function
]]>
</script>   

Consulte también

Elemento <event> | Elemento <method> | Exponer eventos | Exponer métodos | Exponer propiedades

Ayuda de Javascript y Vbscript para Javascripts.astalaweb.com.