When defined like that, speak isn't a property, it's a function.
Properties are things that you change. Typically, you call functions
and they are permanent behaviors of some object.
If you want a function whose result is retrieved via .attr, use the
define plugin like:
can.Map.extend({
define: {
fullName: {
get: function(){
get: function(){
return this.attr("first")+" "+this.attr("last")
}
}
}
}
})