Sha256: bae279ce95dbafa5673a9beee2c5503d6a2537ad70b76b2403d65d8c49a4677a
Contents?: true
Size: 1.5 KB
Versions: 2
Compression:
Stored size: 1.5 KB
Contents
/*! * Chai - hasProperty utility * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com> * MIT Licensed */ var type = require('type-detect'); /** * ### .hasProperty(object, name) * * This allows checking whether an object has * named property or numeric array index. * * Basically does the same thing as the `in` * operator but works properly with natives * and null/undefined values. * * var obj = { * arr: ['a', 'b', 'c'] * , str: 'Hello' * } * * The following would be the results. * * hasProperty('str', obj); // true * hasProperty('constructor', obj); // true * hasProperty('bar', obj); // false * * hasProperty('length', obj.str); // true * hasProperty(1, obj.str); // true * hasProperty(5, obj.str); // false * * hasProperty('length', obj.arr); // true * hasProperty(2, obj.arr); // true * hasProperty(3, obj.arr); // false * * @param {Objuect} object * @param {String|Number} name * @returns {Boolean} whether it exists * @namespace Utils * @name getPathInfo * @api public */ var literals = { 'number': Number , 'string': String }; module.exports = function hasProperty(name, obj) { var ot = type(obj); // Bad Object, obviously no props at all if(ot === 'null' || ot === 'undefined') return false; // The `in` operator does not work with certain literals // box these before the check if(literals[ot] && typeof obj !== 'object') obj = new literals[ot](obj); return name in obj; };
Version data entries
2 entries across 2 versions & 2 rubygems
Version | Path |
---|---|
mdarray-sol-0.1.0-java | node_modules/chai/lib/chai/utils/hasProperty.js |
select_all-rails-0.3.1 | node_modules/chai/lib/chai/utils/hasProperty.js |