dojo.isFunction¶
Status: | Draft |
---|---|
Version: | 1.0 |
Available: | since V0.9 |
Contents
Checks if the parameter is a Function.
As with all dojo._base components, these functions are included within Dojo Base. You get this functionality by just including dojo.js or dojo.xd.js in your page.
Usage¶
1 2 3 4 | var ref = function(a,b){ return a };
if(dojo.isFunction(ref)){
ref();
}
|
This also works with classes created by dojo.declare
1 2 3 4 5 | dojo.declare("Thing", null, { constructor: function(){ });
var ref = Thing;
if(dojo.isFunction(ref)){
var mine = new ref();
}
|
A common pattern is to have a a string version of a fully declared class. You can use dojo.isFunction to tell if you need to convert it to a function or not:
1 2 3 4 5 6 7 | // some dynamic class to use:
var thing = "dijit.Dialog";
// check it out first:
if(!dojo.isFunction(thing)){
thing = dojo.getObject(thing);
}
var dialog = new thing({ title:"bar" });
|
One could use dojo.isString for a similar check.
Examples¶
Test against isFunction()¶
<style type="text/css">
.style1 { background: #f1f1f1; padding: 10px; }
</style>
<script type="text/javascript">
dojo.require("dijit.form.Button");
// test variable t:
var t;
function testIt() {
// resultDiv is the spanning DIV around the result:
var resultDiv = dojo.byId('resultDiv');
// Here comes the test:
// Is t a Function?
if (dojo.isFunction(t)) {
// dojooo: t is a function!
dojo.attr(resultDiv, "innerHTML",
"Yes, good choice: 't' is a function.<br />Try another button.");
// Change the backgroundColor:
dojo.style(resultDiv, {
"backgroundColor": "#a4e672",
"color": "black"
});
} else {
// no chance, this can't be an array:
dojo.attr(resultDiv, "innerHTML",
"No chance: 't' can't be a function with such a value "
+ "('t' seems to be a " + typeof t + ").<br />"
+ "Try another button.");
// Change the backgroundColor:
dojo.style(resultDiv, {
"backgroundColor": "#e67272",
"color": "white"
});
}
}
</script>
<div style="height: 100px;">
<button dojoType="dijit.form.Button">
t = 1000;
<script type="dojo/method" event="onClick" args="evt">
// Set t:
t = 1000;
// Test the type of t:
testIt();
</script>
</button>
<button dojoType="dijit.form.Button">
t = "text";
<script type="dojo/method" event="onClick" args="evt">
// Set t:
t = "text";
// Test the type of t:
testIt();
</script>
</button>
<button dojoType="dijit.form.Button">
t = [1, 2, 3];
<script type="dojo/method" event="onClick" args="evt">
// Set t:
t = [1, 2, 3];
// Test the type of t:
testIt();
</script>
</button>
<button dojoType="dijit.form.Button">
t = { "property": 'value' };
<script type="dojo/method" event="onClick" args="evt">
// Set t:
t = { "property": 'value' };
// Test the type of t:
testIt();
</script>
</button>
<button dojoType="dijit.form.Button">
t = function(a, b){ return a };
<script type="dojo/method" event="onClick" args="evt">
// Set t:
t = function(a, b){ return a } ;
// Test the type of t:
testIt();
</script>
</button>
<div id="resultDiv" class="style1">
Click on a button, to test the associated value.
</div>
</div>
See also¶
- dojo.getObject - Returns the property of an object from a dot-separated string such as "A.B.C"
- dojo.isString - Checks if the parameter is a String
- dojo.isArray - Checks if the parameter is an Array
- dojo.isObject - Checks if the parameter is an Object
- dojo.isArrayLike - Checks if the parameter is like an Array
- dojo.isAlien - Checks if the parameter is a built-in function