angular/angular.js — pull request #8034 by gentooboontoo (2014-07-01 14:47:08+00:00)
Title: fix(copy): preserve property descriptors

Instead of values being simply copied, this change allows to preserve
definitions of own properties. Thus, enumerable (or not), writable (or
not), getter/setter, etc. property definitions are preserved across copies. It
improves change from b59b04f9 preserving prototype chain.

As a side effect, it also includes previously ignored non-enumerable properties
by using `Object.getOwnPropertyNames` to iterate **every** own properties instead
of `for ... in ...` + `hasOwnProperty`.