tweaking....

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2020-05-02 20:51:10 +03:00
parent f2e063ca21
commit 2772e29d92
2 changed files with 8 additions and 4 deletions

View File

@ -382,9 +382,9 @@ function(context, constructor, ...args){
return constructor.prototype.__call__ return constructor.prototype.__call__
.call(obj, this, ...arguments) }, .call(obj, this, ...arguments) },
constructor.prototype.__call__) constructor.prototype.__call__)
// use parent's constructor...
// XXX EXPERIMENTAL... // XXX EXPERIMENTAL...
// XXX do a better test... // XXX do a better test...
// use parent's constructor...
: (constructor.__proto__ instanceof Function : (constructor.__proto__ instanceof Function
&& constructor.__proto__ !== (function(){}).__proto__) ? && constructor.__proto__ !== (function(){}).__proto__) ?
Reflect.construct(constructor.__proto__, [], constructor) Reflect.construct(constructor.__proto__, [], constructor)
@ -528,6 +528,8 @@ function(context, constructor, ...args){
// clone it via. Object.create(..) or copy it... // clone it via. Object.create(..) or copy it...
// NOTE: to disable .__rawinstance__(..) handling set it to false in the // NOTE: to disable .__rawinstance__(..) handling set it to false in the
// class prototype... // class prototype...
//
// XXX revise .toString(..) definition test...
var Constructor = var Constructor =
module.Constructor = module.Constructor =
// shorthand... // shorthand...
@ -559,7 +561,7 @@ function Constructor(name, a, b){
.replace(/Constructor/g, name)) .replace(/Constructor/g, name))
// set .toString(..)... // set .toString(..)...
// NOTE: do this only if .toString(..) is not defined by user... // NOTE: do this only if .toString(..) is not defined by user...
// XXX revise this... // XXX revise this test...
;((cls_proto || {}).toString === Function.toString ;((cls_proto || {}).toString === Function.toString
|| (cls_proto || {}).toString === ({}).toString) || (cls_proto || {}).toString === ({}).toString)
&& Object.defineProperty(_constructor, 'toString', { && Object.defineProperty(_constructor, 'toString', {
@ -578,7 +580,9 @@ function Constructor(name, a, b){
return `${this.name}(${args})${normalizeIndent(code)}` }, return `${this.name}(${args})${normalizeIndent(code)}` },
enumerable: false, enumerable: false,
}) })
_constructor.__proto__ = cls_proto _constructor.__proto__ = cls_proto === undefined ?
_constructor.__proto__
: cls_proto
_constructor.prototype = proto _constructor.prototype = proto
// generic raw instance constructor... // generic raw instance constructor...
_constructor.__rawinstance__ instanceof Function _constructor.__rawinstance__ instanceof Function

View File

@ -1,6 +1,6 @@
{ {
"name": "ig-object", "name": "ig-object",
"version": "2.7.0", "version": "2.7.1",
"description": "", "description": "",
"main": "object.js", "main": "object.js",
"scripts": { "scripts": {