РЕДАКТИРОВАТЬ: Этот вопрос был неправильно выражен.Я действительно хотел спросить:
Есть ли что-нибудь, что нельзя написать на ОО-языках (с поддержкой замыканий), используя стиль передачи продолжения?
Вы можете гуглить, что означает CPS, или просто придерживаться определения функции / метода, никогда ничего не возвращающего, всегда отправляя данные куда-нибудь - используя переданный обратный вызов.
И после ответа на исходный вопрос я даже могу ответить самому себе * нет ничего подобного .Более того, это действительно очень хороший ОО-принцип под названием Tell Dont Ask
function getName(){
return this.name;
}
console.log(xyz.getName())
против
function pushNameTo(callback){
callback(this.name);
}
xyz.pushNameTo(console.log)
хорошо, но на этот раз он был назван в честь как делает это, позволяет назвать его в честь того, что он делает , и сделать его еще более привлекательным. OO:
function renderOn(responseBuilder){
var b = responseBuilder;
//or just string, whatever, depending on your builder implementation
b.field("Name: ", this.name);
b.field("Age: ", this.age);
b.image("Profile photo", this.imageData);
}
person.renderOn(htmlBuilder);
смысл в том, что объект инкапсулирует не только свои данныено даже поведение, дух, личность. Кто еще должен нести ответственность за выражение репрезентации человека, а не самого человека?
Конечно, это не обязательно означает, что вы должны иметь HTML в своем коде, сборщик служит этой цели.Он может даже генерировать некоторый xml или другой формат данных для фактического слоя рендеринга пользовательского интерфейса.Но это всегда толчок вместо тяги.