diff --git a/README.md b/README.md
index e072e4e..6c70e40 100755
--- a/README.md
+++ b/README.md
@@ -58,9 +58,9 @@ var L = object.Constructor('L', Array, {
```
- Clear separation of constructor and `.prototype` data:
- - First block (optional) is merged with constructor
- - Second block is the `.prototype`
-- no direct way to define "private"
+ - First block (optional) is merged with `L`,
+ - Second block _is_ the `.prototype`,
+- no direct way to do "private" definitions.
@@ -87,7 +87,8 @@ class L extends Array {
}
}
```
-- `static` and instance definitions are mixed within the body,
+- pretty but misleading syntax,
+- `static` and instance definitions are not ordered,
- `.attr` is copied to every instance
|
@@ -148,7 +149,7 @@ we simply need to _link_ the prototypes of two constructors via `.__proto__`,
`Object.create(..)` or other means.
```javascript
-var B = object.Constructor('B', { __extends__: A })
+var B = object.Constructor('B', A, {})
var C = object.Constructor('C', B, {})
```
@@ -183,10 +184,7 @@ var Base = object.Constructor('Base', {
},
})
-var Item = object.Constructor('Item', {
- // inherit from Base...
- __extends__: Base,
-
+var Item = object.Constructor('Item', Base, {
__init__: function(){
// call the "super" method...
object.parentCall(this.prototype.__init__, this)
@@ -322,27 +320,20 @@ var C = object.Constructor('C',
And the same thing while extending...
```javascript
-var D = object.Constructor('D',
+var D = object.Constructor('D', C,
// this will get mixed into C(..)...
{
- __extends__: C,
-
// ...
}, {
// ...
})
```
-Note that `.__extends__` can be written in either block, this is done
-for convenience and to keep it as close as possible to the definition top.
-
### Inheriting from native constructor objects
```javascript
-var myArray = object.Constructor('myArray', {
- __extends__: Array,
-
+var myArray = object.Constructor('myArray', Array, {
// ...
})
```
@@ -361,9 +352,7 @@ Extending `.constructor(..)` is not necessary in most cases as
replacement.
```javascript
-var myArray = object.Constructor('myArray', {
- __extends__: Array,
-
+var myArray = object.Constructor('myArray', Array, {
__new__: function(context, ...args){
var obj = Reflect.construct(myArray.__proto__, args, myArray)
@@ -454,6 +443,7 @@ Define an object constructor
Constructor()
Constructor(, )
Constructor(, , )
+Constructor(, , , )
Constructor(, , )
->
```
diff --git a/object.js b/object.js
index b4f0e3d..b9edba3 100755
--- a/object.js
+++ b/object.js
@@ -427,16 +427,6 @@ function(context, constructor, ...args){
//
//
//
-// Special attributes:
-// .__extends__
-// Shorthand to define define the prototype constructor.
-// Constructor('X', {__extends__: Y})
-// is the same as:
-// Constructor('X', Y, {})
-// This can be defined on either the prototype or the constructor
-// mixin but not on both.
-//
-//
// Special methods (constructor):
//
// Handle uninitialized instance construction
@@ -474,7 +464,7 @@ function(context, constructor, ...args){
// // NOTE: new is optional...
// var A = new Constructor('A')
//
-// var B = Constructor('B', { __extends__: A })
+// var B = Constructor('B', A, {})
//
// var C = Constructor('C', B, {})
//
@@ -540,13 +530,12 @@ function Constructor(name, a, b, c){
// handle:
// Constructor(name, constructor, ..)
- if(constructor_proto){
- proto.__proto__ === Object.prototype
- && (proto.__proto__ = constructor_proto.prototype)
+ constructor_proto
+ && proto.__proto__ === Object.prototype
+ && (proto.__proto__ = constructor_proto.prototype)
- // handle:
- // Constructor(name, ..)
- } else {
+ // handle: .__extends__
+ if(!constructor_proto){
// handle .__extends__
a = Object.hasOwnProperty.call(proto, '__extends__')
&& proto.__extends__