Javascript OO with objects instead of functions

I try do OO with Object instead of Function or Class.
This is the code so far..

function extend(proto, obj) {   const sub = Object.create(proto)   if (obj) Object.assign(sub, obj)    sub.constructor = function() {     proto.constructor.apply(sub, arguments)     obj.constructor.apply(sub, arguments)     return sub   }    return sub } 

Try it …

var Person = {    constructor: function(firstName, lastName) {     this.firstName = firstName;     this.lastName = lastName;   },    getFullName: function() {     return this.firstName + " " + this.lastName;   }  }  var Student = extend(Person, {    constructor: function(studentId, firstName, lastName) {     //super(firstName, lastName); //we do it another way?     this.studentId = studentId;   },    getStudentInfo: function() {     return this.studentId + " " + this.lastName + ", " + this.firstName;   }  });  //var student = new Student(1, "Bob", "Smith"); var student = Student.constructor(1, "Bob", "Smith")  console.log(student.getFullName()); console.log(student.getStudentInfo()); 

Outputs …

1 Bob
Bob, 1

But it should be !!!…

Bob Smith
1 Smith, Bob

It is the parameter lengths of constructors that doesn’t match. Can it be solved or should I be happy with no call of super is needed, and tell the users to have same parameter configuration as the super-object.

First I thought that constructor.length is the arity but there are no property storing parameters where parameter-names could be retrieved.

It may be solved if last parameters is copied from sub-object and the diff of arities is the number of parameters to skip. Then user need to know the pattern to follow. Maybe a good pattern? What you think? What is the next step? If no better ideas, then how is the super function possible to implement?

The example is from JavaScript ES2015 Classes and Prototype Inheritance (Part 1 of 2).