Это отдельная реализация ES5 Object.create:
window.createObject = (function() {
var F = function () {};
return function(o) {
F.prototype = o;
return new F();
}
}());
и пример ее использования:
var cat = createObject(animal);
Я заметил, что внутренние компоненты animal
немного запутаться при попытке вызвать частные функции, например:
animal = (function() {
function privFunc(arg) {
this.property;
}
function publFunc(arg) {
privFunc.call(this, arg);
}
return {
publFunc: publFunc
}
}());
Есть ли более чистый способ следовать этому типу паттернов?В частности, устранение необходимости в privFunc.call(this, arg)
.
Другой способ, столь же уродливый, это:
function privFunc(animal, arg) {
animal.property;
}
function publFunc(arg) {
privFunc(this, arg);
}