Sometimes, we want to know exactly what type of vRO object we are working on. It could be something that is returning from an action of type Any
or a method returning various types of objects or simply about switch cases. In this quick post, we will see what are the options that vRO provides and where to use them.
typeof
The typeof
operator returns a string indicating the type of the operand’s value where the operand is an object
or of primitive
type.
Type | Result |
---|---|
Undefined | "undefined" |
Null | "object" (reason) |
Boolean | "boolean" |
Number | "number" |
String | "string" |
Function | "function" |
Array | "object" |
Date | "object" |
vRO Object types | "object" |
Composite Types | "object" |
vRO Object types with new operator | "function" |
Code Examples
var var1 = new VcCustomizationSpec();
System.debug(typeof var1); //function
var var2 = new Object();
System.debug(typeof var2); //object
var var3 = "a";
System.debug(typeof var3); //string
var var4 = 2;
System.debug(typeof var4); //number
var var4 = new Array(1, 2, 3);
System.debug(typeof var4); //object
System.debug(typeof []); //object
System.debug(typeof function () {}); //function
System.debug(typeof /regex/); //object
System.debug(typeof new Date()); //object
System.debug(typeof null); //object
System.debug(typeof undefinedVarible); //undefined
Using new operator


In this example, typeof operator is showing different results when used with new operator for class VC:CustomizationSpecManager
. That’s because the new operator is used for creating a user-defined object type instance of one of the built-in object types that has a constructor function. So basically it calls the constructor function of that object type, hence typeof prints function. However, something to note here is that when new operator is used with primitive object type Number, typeof recognizes that as an object.
var num1 = 2;
System.debug(typeof num1); //number
var num2 = Number("123");;
System.debug(typeof (1 + num2)); //number
var num3 = new Number("123");;
System.debug(typeof (num3)); //object
var num4 = new Number("123");;
System.debug(typeof (1 + num4)); //number
use of Parenthesis
// Parentheses can be used for determining the data type of expressions.
const someData = 99;
typeof someData + "cloudblogger"; // "number cloudblogger"
typeof (someData + " cloudblogger"); // "string"
System.getObjectType()
The System.getObjectType() method returns the VS-O ‘type’ for the given operand. This method is more advanced than typeof and is able to detect more complex yet intrinsic object types like Date, Array etc. But, it still cannot figure out the plugin object types like VC:SDKConnection
, etc.
Type | Result |
---|---|
Array | "Array" |
Number | "number" |
String | "string" |
vRO Plugin Object Types (with or without new ) | "null" |
Date | "Date" |
Composite Types | "Properties" |
SecureString | "string" |
undefined Variable | Reference Error |
Code Examples
var var1 = new VcCustomizationSpec();
System.debug(System.getObjectType(var1)); //null
var var2 = new Object();
System.debug(System.getObjectType(var2)); //Properties
var var3 = "a";
System.debug(System.getObjectType(var3)); //string
var var4 = 2;
System.debug(System.getObjectType(var4)); //number
var var4 = new Array(1, 2, 3);
System.debug(System.getObjectType(var4)); //Array
System.debug(System.getObjectType([])); //Array
System.debug(System.getObjectType(function () {})); //null
System.debug(System.getObjectType(new Date())); //Date
System.debug(System.getObjectType(undefinedVarible)); //FAIL ReferenceError: "undefinedVarible" is not defined.
System.getObjectClassName()
The System.getObjectClassName() method returns the class name of any vRO scripting object that typeof(obj) returns “object”. This works the best with complex vRO object types and surpasses System.getObjectType()
in terms of its capability to identify object types.
Type | Result |
---|---|
Array | "Array" |
Number | "Number" |
String | "String" |
vRO Plugin Object Types (eg: VC:SdkConnection) | Class Name (eg: VcSdkConnection) |
Date | "Date" |
Composite Types | "Properties" |
SecureString | "String" |
undefined Variable | Reference Error |
null objects | Error: Cannot get class name from null object |
Code Examples
System.debug(System.getObjectClassName(input)); //String
var var1 = new VcCustomizationSpec();
System.debug(System.getObjectClassName(var1)); //VcCustomizationSpec
var var2 = new Object();
System.debug(System.getObjectClassName(var2)); //Object
var var3 = "a";
System.debug(System.getObjectClassName(var3)); //String
var var4 = 2;
System.debug(System.getObjectClassName(var4)); //Double
var var4 = new Array(1, 2, 3);
System.debug(System.getObjectClassName(var4)); //Array
System.debug(System.getObjectClassName([])); //Array
System.debug(System.getObjectClassName(function () {})); //Function
System.debug(System.getObjectClassName(new Date())); //Date
instanceof
The instanceof
operator tests to see if the prototype
property of a constructor appears anywhere in the prototype chain of an object. The return value is a boolean value. This means that instanceof checks if RHS matches the constructor of a class. That’s why it doesn’t work with primitive types like number, string, etc. However, works with variety of complex types available in vRO.
Syntax
object instanceof constructor
Code Examples
var var1 = new VcCustomizationSpec();
System.debug(var1 instanceof VcCustomizationSpec); //true
var var1 = new VcCustomizationSpec();
System.debug(var1 instanceof Object); //true
var var2 = new Object();
System.debug(var2 instanceof Object); //true
var var3 = "a";
System.debug(var3 instanceof String); //false
var var3 = new String("a");
System.debug(var3 instanceof String); //true
var var3 = "a";
System.debug(var3 instanceof String); //false
var var4 = 2;
System.debug(var4 instanceof Number); //false
var var4 = new Array(1, 2, 3);
System.debug(var4 instanceof Array); //true
System.debug([] instanceof Array); //true
System.debug(function () {} instanceof Function); //true
System.debug(new Date() instanceof Date); //true
System.debug({} instanceof Object); //true
That’s all in this port. I hope you will have a better understanding on how to check vRO Object types. Let me know in the comment if you have any doubt or question. Feel free to share this article. Thank you.
Leave a Reply