21
21
// MODULES //
22
22
23
23
var setReadOnly = require ( '@stdlib/utils/define-nonenumerable-read-only-property' ) ;
24
+ var setNonEnumerable = require ( '@stdlib/utils/define-nonenumerable-property' ) ;
24
25
var isArrayLikeObject = require ( '@stdlib/assert/is-array-like-object' ) ;
25
26
var isTypedArrayLike = require ( '@stdlib/assert/is-typed-array-like' ) ;
26
27
var isBuffer = require ( '@stdlib/assert/is-buffer' ) ;
@@ -34,6 +35,7 @@ var isBufferLengthCompatible = require( '@stdlib/ndarray/base/assert/is-buffer-l
34
35
var bytesPerElement = require ( '@stdlib/ndarray/base/bytes-per-element' ) ;
35
36
var baseCtor = require ( '@stdlib/ndarray/base/memoized-ctor' ) ;
36
37
var inherit = require ( '@stdlib/utils/inherit' ) ;
38
+ var objectKeys = require ( '@stdlib/utils/keys' ) ;
37
39
var defaults = require ( './defaults.json' ) ;
38
40
var igetValue = require ( './iget.js' ) ;
39
41
var isetValue = require ( './iset.js' ) ;
@@ -137,8 +139,11 @@ function ctor( dtype, ndims, options ) {
137
139
*/
138
140
function ndarray ( buffer , shape , strides , offset , order ) {
139
141
/* eslint-disable no-invalid-this */
142
+ var keys ;
140
143
var sh ;
141
144
var st ;
145
+ var k ;
146
+ var i ;
142
147
if ( ! ( this instanceof ndarray ) ) {
143
148
return new ndarray ( buffer , shape , strides , offset , order ) ;
144
149
}
@@ -180,6 +185,14 @@ function ctor( dtype, ndims, options ) {
180
185
// Cache references to the parent constructor and parent constructor methods:
181
186
setReadOnly ( this , '_parent' , parent ) ;
182
187
188
+ // Make all inherited "private" properties non-enumerable...
189
+ keys = objectKeys ( this ) ;
190
+ for ( i = 0 ; i < keys . length ; i ++ ) {
191
+ k = keys [ i ] ;
192
+ if ( k [ 0 ] === '_' ) {
193
+ setNonEnumerable ( this , k , this [ k ] ) ;
194
+ }
195
+ }
183
196
return this ;
184
197
185
198
/* eslint-enable no-invalid-this */
0 commit comments