Categories:
Partners

Objects as Associative Arrays

As you may know, the dot (.) operator can be used to access the [] operator used with arrays.

<script language="javascript" type="text/javascript">
<!--

// These are the same
  object.property
  object["property"]

//-->
</script>

The important thing to notice is that in the object syntax the property is an identifier, whereas in the array syntax, it's a string. The obvious benefits of using an array syntax to access an object is because of the literal data type, you can easily concat strings and play around with them to access an object. For this to work with the standard syntax, an eval() would need to be used.

How do I loop through properties in an object?

You need to use a for/in loop.

<script language="javascript" type="text/javascript">
<!--

testObj = {

	prop1:"hello",
	prop2:"hello2",
	prop3:new Array("helloa",1,2)
}

for(x in testObj) alert( x + "-" + testObj[ x ] )

//-->
</script>

What about JScript.NET?

Once you have mastered JScript, you will find it easy to move over to .NET

As the .NET compiler will compile your code into the IL (Intermediate Language) you have the same power to create fully fledged applications as a C# programmer. The great thing about JScript.NET is that it supports typed and untyped programming, (for simple things) so you can still churn out apps quickly.

If you are making complicated Interfaces and such, there is no automatic recognition for this.

Getting as quickly to OOP as possible, I will quickly run over the slightly new syntax with you.

<script language="JScript" runat="server">
var tim : String = "hello";
foo : Array = ["1", "2", "3"];
</script>

You may now explicitly set the data type for a variable.

To make an object, you can use the old fashioned way with JScript, or make a class. For example;

<script language="JScript" runat="server">

public class timObject (n) {

	private tim : String  = hello; // tim is a property of the object
	private name : String = n;
	private talk : Function = function(e) { // method
		alert ( this.name + " says hello")
	}
}

</script>

Is there a prototype equivalent?

Yes; but you may still use prototype inheritance.

<script language="JScript" runat="server">

public class extends timObject {
	function changeName( n ) {
		this.name = n;
	}
}

</script>

It is possible in .NET to make entire web services simply by making a class that extends the framework.

See also tutorial: The prototype object of JavaScript

About the author: Tim Scarfe is a Web Developer/IT Guy from West London, England. He is very keen on W3C Standards and Accessibility. Tim runs http://www.developer-x.com
Copyright 1997-2014 JavaScript Kit. NO PART may be reproduced without author's permission.