# `Rx.BehaviorSubject` class #
Represents a value that changes over time. Observers can subscribe to the subject to receive the last (or initial) value and all subsequent notifications.
This class inherits both from the `Rx.Observable` and `Rx.Observer` classes.
## Usage ##
The follow example shows the basic usage of an `Rx.BehaviorSubject` class.
```js
/* Initialize with initial value of 42 */
var subject = new Rx.BehaviorSubject(42);
var subscription = subject.subscribe(
function (x) {
console.log('Next: ' + x.toString());
},
function (err) {
console.log('Error: ' + err);
},
function () {
console.log('Completed');
});
// => Next: 42
subject.onNext(56);
// => Next: 56
subject.onCompleted();
// => Completed
```
### Location
- rx.binding.js
## `BehaviorSubject Constructor` ##
- [`constructor`](#rxbehaviorsubjectintialvalue)
## `BehaviorSubject Instance Methods` ##
- [`dispose`](#rxbehaviorsubjectprototypedispose)
- [`hasObservers`](#rxbehaviorsubjectprototypehasobservers)
## Inherited Classes ##
- [`Rx.Observable`](https://github.com/Reactive-Extensions/RxJS/blob/master/doc/core/observable.md)
- [`Rx.Observer`](https://github.com/Reactive-Extensions/RxJS/blob/master/doc/core/observer.md)
## _BehaviorSubject Constructor_ ##
### `Rx.BehaviorSubject(initialValue)`
# [Ⓢ](https://github.com/Reactive-Extensions/RxJS/blob/master/src/core/subjects/behaviorsubject.js#L30-L37 "View in source")
Initializes a new instance of the `Rx.BehaviorSubject` class which creates a subject that caches its last value and starts with the specified value.
#### Arguments
1. `initialValue` *(Any)*: Initial value sent to observers when no other value has been received by the subject yet.
#### Example
```js
var subject = new Rx.BehaviorSubject(56);
subject.onCompleted();
var subscription = source.subscribe(
function (x) {
console.log('Next: ' + x);
},
function (err) {
console.log('Error: ' + err);
},
function () {
console.log('Completed');
});
// => Next: 56
subject.onNext(42);
// => Next: 42
subject.onCompleted();
// => Completed
```
### Location
= rx.binding.js
* * *
## _BehaviorSubject Instance Methods_ ##
### `Rx.BehaviorSubject.prototype.dispose()`
# [Ⓢ](https://github.com/Reactive-Extensions/RxJS/blob/master/src/core/subjects/behaviorsubject.js#L97-L102 "View in source")
Unsubscribe all observers and release resources.
#### Example
```js
var subject = new Rx.BehaviorSubject();
var subscription = subject.subscribe(
function (x) {
console.log('Next: ' + x.toString());
},
function (err) {
console.log('Error: ' + err);
},
function () {
console.log('Completed');
});
subject.onNext(42);
// => Next: 42
subject.onCompleted();
// => Completed
subject.dispose();
try {
subject.onNext(56);
} catch (e) {
console.log(e.message);
}
// => Object has been disposed
```
### Location
= rx.binding.js
* * *
### `Rx.BehaviorSubject.prototype.hasObservers()`
# [Ⓢ](https://github.com/Reactive-Extensions/RxJS/blob/master/src/core/subjects/behaviorsubject.js#L44-L46 "View in source")
Indicates whether the subject has observers subscribed to it.
#### Returns
*(Boolean)*: Returns `true` if the Subject has observers, else `false`.
#### Example
```js
var subject = new Rx.BehaviorSubject();
console.log(subject.hasObservers());
// => false
var subscription = subject.subscribe(
function (x) {
console.log('Next: ' + x.toString());
},
function (err) {
console.log('Error: ' + err);
},
function () {
console.log('Completed');
});
console.log(subject.hasObservers());
// => true
```
### Location
= rx.binding.js
* * *