# inheritedPropertyDescriptor
> Return a property descriptor for an object's inherited property.
## Usage
```javascript
var inheritedPropertyDescriptor = require( '@stdlib/utils/inherited-property-descriptor' );
```
#### inheritedPropertyDescriptor( obj, property\[, level] )
Returns a property descriptor for an object's inherited property.
```javascript
function Foo() {
return this;
}
Foo.prototype.bar = 'foo';
var obj = new Foo();
var desc = inheritedPropertyDescriptor( obj, 'bar' );
// returns {'configurable':true,'enumerable':true,'writable':true,'value':'foo'}
```
By default, the function walks an object's entire prototype chain. To limit the inheritance level, provide a `level` argument.
```javascript
var inherit = require( '@stdlib/utils/inherit' );
function Bar() {
return this;
}
Bar.prototype.beep = 'boop';
function Foo() {
Bar.call( this );
return this;
}
inherit( Foo, Bar );
var f = new Foo();
var desc = inheritedPropertyDescriptor( f, 'beep', 1 );
// returns null
```
## Notes
- This function differs from the built-in `Object.getOwnPropertyDescriptor()` as follows:
- If provided `null` or `undefined`, the function returns `null`, rather than throwing an error.
- If an object does not have a provided inherited property, the function returns `null`, rather than `undefined`.
## Examples
```javascript
var defineProperty = require( '@stdlib/utils/define-property' );
var inheritedPropertyDescriptor = require( '@stdlib/utils/inherited-property-descriptor' );
function Foo() {
this.beep = 'boop';
this.a = {
'b': 'c'
};
defineProperty( this, 'baz', {
'value': 'qux',
'configurable': true,
'writable': true,
'enumerable': false
});
return this;
}
Foo.prototype.foo = [ 'bar' ];
var obj = new Foo();
var desc = inheritedPropertyDescriptor( obj, 'foo' );
console.log( desc );
// => {'configurable':true,'enumerable':true,'writable':true,'value':['bar']}
```