Показать сообщение отдельно
  #31 (permalink)  
Старый 17.09.2015, 19:07
Аспирант
Посмотреть профиль Найти все сообщения от newtimebigtime
 
Регистрация: 16.09.2015
Сообщений: 34

Сообщение от FINoM
Одной штуки, конечно, не хватает в JS, которая есть в Кофе:
теперь есть.
Object.prototype.$=function(slot){
 var self = this
 if(slot in this && typeof this[slot] === "function") return function(){return self[slot].apply(self, arguments)}
 if(slot in this) return this[slot]
 return {value: undefined}
}

o={foo: {bar: 1}, bar: 1, baz: function(x){return x+this.bar}}

console.log(
 o.$("foo").$("bar"),
 o.$("baz")(4),
 o.$("moo").$("foo")
)

//1 5 { value: undefined }

Вопросительный знак использовать не получится, но можно юзать другие идентификаторы. Синтаксис чуть другой, суть та же. МБ надо чуть допилить, толком не тестил.
Ответить с цитированием