dojo.isAlien

since:V?

Checks if the parameter is a built-in function.

As with all dojo._base components, these functions are included within Dojo Base. You get this functionality by just including dojo.js in your page.

Usage

Use this to test if a variable is a built-in function.

// Dojo 1.7+ (AMD)
require(["dojo/_base/lang"], function(lang){
  lang.isAlien(foo)
});
// Dojo < 1.7
dojo.isAlien(foo)

Returns true if it is a built-in function or some other kind of oddball that should report as a function but doesn’t.

// Dojo 1.7+ (AMD)
require(["dojo/_base/lang"], function(lang){
  // Check, if variable "foo" is a built-in function:
  if(lang.isAlien(foo)){
    // do something...
  }
});
// Dojo < 1.7
// Check, if variable "foo" is a built-in function:
if(dojo.isAlien(foo)){
    // do something...
}

Examples

Test against isAlien()

.style1 { background: #f1f1f1; padding: 10px; }
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 an built-in function?
    if(dojo.isAlien(t)){
        // dojooo: t is a built-in function!
        dojo.attr(resultDiv, "innerHTML",
            "Yes, good choice: 't' is a built-in function.<br />Try another button.");

        // Change the backgroundColor:
        dojo.style(resultDiv, {
            "backgroundColor": "#a4e672",
            "color": "black"
        });
    }else{
        // no chance, this can't be a built-in function:
        dojo.attr(resultDiv, "innerHTML",
            "No chance: 't' can't be a built-in 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"
        });
    }
}
<div style="height: 100px;">
    <button data-dojo-type="dijit.form.Button">
        t = 1000;
        <script type="dojo/method" data-dojo-event="onClick" data-dojo-args="evt">
            // Set t:
            t = 1000;

            // Test the type of t:
            testIt();
        </script>
    </button>
    <button data-dojo-type="dijit.form.Button">
        t = "text";
        <script type="dojo/method" data-dojo-event="onClick" data-dojo-args="evt">
            // Set t:
            t = "text";

            // Test the type of t:
            testIt();
        </script>
    </button>
    <button data-dojo-type="dijit.form.Button">
        t = [1, 2, 3];
        <script type="dojo/method" data-dojo-event="onClick" data-dojo-args="evt">
            // Set t:
            t = [1, 2, 3];

            // Test the type of t:
            testIt();
        </script>
    </button>
    <button data-dojo-type="dijit.form.Button">
        t = { "property": 'value' };
        <script type="dojo/method" data-dojo-event="onClick" data-dojo-args="evt">
            // Set t:
            t = { "property": 'value' };

            // Test the type of t:
            testIt();
        </script>
    </button>
    <button data-dojo-type="dijit.form.Button">
        t = function(a, b){ return a };
        <script type="dojo/method" data-dojo-event="onClick" data-dojo-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

Error in the documentation? Can’t find what you are looking for? Let us know!