¿Cuál es la sintaxis correcta del transportador para los objetos de página?

Me he encontrado con diferentes tipos de sintaxis para los objetos de página del transportador y me preguntaba, cuál es su origen y de qué manera se sugiere.

Esta es la sintaxis oficial de PageObject del tutorial de Protractor. Me gusta más, porque es claro y legible:

use strict;

var AngularHomepage = function() {
  var nameInput = element(by.model('yourName'));
  var greeting = element(by.binding('yourName'));

  this.get = function() {
    browser.get('http://www.angularjs.org');
  };

  this.setName = function(name) {
    nameInput.sendKeys(name);
  };

  this.getGreeting = function() {
    return greeting.getText();
  };
};
module.exports = AngularHomepage;

Sin embargo, también he encontrado este tipo:

'use strict';

var AngularPage = function () {
  browser.get('http://www.angularjs.org');
};

    AngularPage.prototype  = Object.create({}, {
      todoText:  {   get: function ()     { return element(by.model('todoText'));             }},
      addButton: {   get: function ()     { return element(by.css('[value="add"]'));          }},
      yourName:  {   get: function ()     { return element(by.model('yourName'));             }},
      greeting:  {   get: function ()     { return element(by.binding('yourName')).getText(); }},
      todoList:  {   get: function ()     { return element.all(by.repeater('todo in todos')); }},
      typeName:  { value: function (keys) { return this.yourName.sendKeys(keys);              }} ,
      todoAt:    { value: function (idx)  { return this.todoList.get(idx).getText();          }},
      addTodo:   { value: function (todo) {
        this.todoText.sendKeys(todo);
        this.addButton.click();
      }}
    });

    module.exports = AngularPage;

¿Cuáles son las ventajas y desventajas de esos dos enfoques (aparte de la legibilidad)? ¿Está el segundo actualizado? He visto que WebdriverIO usa ese formato.

También escuché de un tipo en Gitter que la primera entrada es ineficiente. ¿Alguien puede explicarme por qué?

Respuestas a la pregunta(1)

Su respuesta a la pregunta