значения @ sign и "->" и "=>" найдены в базовом коде сценария кофе - PullRequest
0 голосов
/ 02 июля 2019

Каково значение / значение

  • @ префикс
  • разница между -> и =>

Есть ли какая-нибудь документация, которую я могу найти для этого? Трудно гуглить для этих специальных символов, поэтому я спрашиваю здесь. [ полный текст ]

class RP.Dashboard.Events.Form extends Backbone.View
  el: '.simple_form.new_event, .simple_form.edit_event, .simple_form#new_event, .simple_form#edit_event'
  events:
    'focus #location_autocomplete': 'geolocate'
  address_component_map:
    street_number:
      key: 'short_name'
      form_field: '#event_address'


  initialize: ->
    @render()
    @init_autocomplete()

  render: ->
    @$(".datepicker" ).datepicker(
      showOn: "button"
      buttonImageOnly: true
      changeMonth: true
      changeYear: true
      format: 'yyyy-mm-dd'
      dateFormat: 'yy-mm-dd'
    )
    @$(".timepicker").timepicker()
    @$('.input-timepicker').timepicker({minuteStep: 1,showSeconds: false,showMeridian: true,defaultTime: '8'});


  fill_in_address: =>

1 Ответ

0 голосов
/ 02 июля 2019

Поиск в Google «coffeescript at sign» дает Имеет ли символ «@» особое значение в Javascript, Coffeescript или Jquery? в качестве верхнего результата.@ означает this в coffeescript:

## coffeescript
self = @ 

## javascript
var self = this

Что касается разницы между -> и =>, поиск в Google «cofeescript ->» возвращает это как верхнюю ссылку:

CoffeeScript, Когда использовать жирную стрелку (=>) над стрелкой (->) и наоборот

Чтобы скопировать и вставить оттуда:

Основной вариант использования Iжирная стрелка в определении методов обнаружена, когда вы хотите использовать метод в качестве обратного вызова, и этот метод ссылается на поля экземпляра:

class A
  constructor: (@msg) ->
  thin: -> alert @msg
  fat:  => alert @msg

x = new A("yo")
x.thin() #alerts "yo"
x.fat()  #alerts "yo"

fn = (callback) -> callback()

fn(x.thin) #alerts "undefined"
fn(x.fat)  #alerts "yo"
fn(-> x.thin()) #alerts "yo"

Как видите, вы можетестолкнуться с проблемами, передавая ссылку на метод экземпляра в качестве обратного вызова, если вы не используете жирную стрелку.Это связано с тем, что жирная стрелка привязывает экземпляр объекта к этому, а тонкая стрелка - нет, поэтому методы тонкой стрелки, называемые обратными вызовами, как указано выше, не могут получить доступ к полям экземпляра, таким как @msg, или вызвать другие методы экземпляра.В последней строке есть обходной путь для случаев, когда использовалась тонкая стрелка.

...