I'm designing a language that takes both roads. Objects are defined declaratively (and in any order), but object property values may be "defined" imperatively or declaratively. If the value of an object property depends on the value of another object property, its value is (by default) reevaluated (i.e., reactively) whenever the depended-on value changes. Like in a spreadsheet, but without the spreadsheet.