mirror of
https://github.com/photonstorm/phaser
synced 2024-12-19 01:24:48 +00:00
38 lines
1.2 KiB
JavaScript
38 lines
1.2 KiB
JavaScript
|
/**
|
||
|
* This is a slightly modified version of jQuery.isPlainObject.
|
||
|
* A plain object is an object whose internal class property is [object Object].
|
||
|
* @method Phaser.Utils.isPlainObject
|
||
|
* @param {object} obj - The object to inspect.
|
||
|
* @return {boolean} - true if the object is plain, otherwise false.
|
||
|
*/
|
||
|
var IsPlainObject = function (obj)
|
||
|
{
|
||
|
// Not plain objects:
|
||
|
// - Any object or value whose internal [[Class]] property is not "[object Object]"
|
||
|
// - DOM nodes
|
||
|
// - window
|
||
|
if (typeof(obj) !== "object" || obj.nodeType || obj === obj.window)
|
||
|
{
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
// Support: Firefox <20
|
||
|
// The try/catch suppresses exceptions thrown when attempting to access
|
||
|
// the "constructor" property of certain host objects, ie. |window.location|
|
||
|
// https://bugzilla.mozilla.org/show_bug.cgi?id=814622
|
||
|
try {
|
||
|
if (obj.constructor && !({}).hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf"))
|
||
|
{
|
||
|
return false;
|
||
|
}
|
||
|
} catch (e) {
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
// If the function hasn't returned already, we're confident that
|
||
|
// |obj| is a plain object, created by {} or constructed with new Object
|
||
|
return true;
|
||
|
};
|
||
|
|
||
|
module.exports = IsPlainObject;
|