Skip to content

Commit c632169

Browse files
committed
Ensure inherited private properties are non-enumerable
1 parent 2f52f71 commit c632169

File tree

1 file changed

+13
-0
lines changed
  • lib/node_modules/@stdlib/ndarray/ctor/lib

1 file changed

+13
-0
lines changed

lib/node_modules/@stdlib/ndarray/ctor/lib/main.js

+13
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
// MODULES //
2222

2323
var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );
24+
var setNonEnumerable = require( '@stdlib/utils/define-nonenumerable-property' );
2425
var isArrayLikeObject = require( '@stdlib/assert/is-array-like-object' );
2526
var isTypedArrayLike = require( '@stdlib/assert/is-typed-array-like' );
2627
var isBuffer = require( '@stdlib/assert/is-buffer' );
@@ -34,6 +35,7 @@ var isBufferLengthCompatible = require( '@stdlib/ndarray/base/assert/is-buffer-l
3435
var bytesPerElement = require( '@stdlib/ndarray/base/bytes-per-element' );
3536
var baseCtor = require( '@stdlib/ndarray/base/memoized-ctor' );
3637
var inherit = require( '@stdlib/utils/inherit' );
38+
var objectKeys = require( '@stdlib/utils/keys' );
3739
var defaults = require( './defaults.json' );
3840
var igetValue = require( './iget.js' );
3941
var isetValue = require( './iset.js' );
@@ -137,8 +139,11 @@ function ctor( dtype, ndims, options ) {
137139
*/
138140
function ndarray( buffer, shape, strides, offset, order ) {
139141
/* eslint-disable no-invalid-this */
142+
var keys;
140143
var sh;
141144
var st;
145+
var k;
146+
var i;
142147
if ( !(this instanceof ndarray) ) {
143148
return new ndarray( buffer, shape, strides, offset, order );
144149
}
@@ -180,6 +185,14 @@ function ctor( dtype, ndims, options ) {
180185
// Cache references to the parent constructor and parent constructor methods:
181186
setReadOnly( this, '_parent', parent );
182187

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+
}
183196
return this;
184197

185198
/* eslint-enable no-invalid-this */

0 commit comments

Comments
 (0)