Различие заключается в так называемом «псевдоклассическом и прототипном наследовании». Предлагаем использовать только один тип в вашем коде, не смешивая их.
В псевдоклассическом наследовании (с оператором «new») представьте, что вы сначала определяете псевдокласс, а затем создаете объекты из этого класса. Например, определите псевдокласс "Person", а затем создайте "Alice" и "Bob" из "Person".
В наследовании прототипа (используя Object.create) вы непосредственно создаете конкретного человека «Алису», а затем создаете другого человека «Боба», используя «Алису» в качестве прототипа. Здесь нет «класса»; все являются объектами.
Внутренне JavaScript использует «прототипное наследование»; «псевдоклассический» путь - это просто немного сахара.
См. эту ссылку для сравнения двух способов.
Хорошо, проблема заключалась в том, что методы были фактически объявлены частными, а не общедоступными, как в моем сообщении, что привело к тому же симптому, что и свойство $ data.
Вы объявили данные
закрытыми, поэтому ChildObj не сможет получить к ним доступ - вместо этого вам нужно сделать его защищенным:
protected $data;
My PHP (5.2 .8) выводит ChildObj :: method ()
- у вас установлена более старая версия?