将coffeescript函数转换为javascript

use*_*963 9 javascript jquery ruby-on-rails coffeescript

我关注此railscast https://www.youtube.com/watch?v=ltoPZEzmtJA但我不使用coffeescript.我试图将coffeescript转换为javascript,但我遇到了问题.

CoffeeScript的

jQuery ->
  new AvatarCropper()

class AvatarCropper
  constructor: ->
    $('#cropbox').Jcrop
      aspectRatio: 1
      setSelect: [0, 0, 600, 600]
      onSelect: @update
      onChange: @update

  update: (coords) =>
    $("#crop_x").val coords.x
    $("#crop_y").val coords.y
    $("#crop_w").val coords.w
    $("#crop_h").val coords.h
Run Code Online (Sandbox Code Playgroud)

js.erb文件

$(document).ready(function() {

  $('.crop-image').on('click', function () {
    $('#cropbox').Jcrop({
      aspectRatio: 1,
      setSelect: [0, 0, 100, 100],
      onSelect: update,
      onChange: update
    })
  });

  update: (function(_this) {
    return function(coords) {
      $('.user').val(coords.x);
      $('.user').val(coords.y);
      $('.user').val(coords.w);
      return $('.user').val(coords.h);
    };
  })(this)  

});
Run Code Online (Sandbox Code Playgroud)

我不明白为什么他决定上课,并认为改变整个事情会更复杂.我遇到的麻烦是更新功能.我只是将用于更新功能的咖啡脚本插入转换器并使用输出.这导致错误,表示未定义更新.我哪里错了?

另外还有一个问题:他在这里上课的重点是什么?

谢谢!

Hyd*_*per 7

您的语法看起来不对... :用于声明带标签的语句.

这是一种正确的方法.声明一个提升的变量并分配一个函数ref.它.函数名称也可以出现在表达式函数中,因此它可以使用其名称来自我引用.

var除了赋值之外,使用函数变量应该提升.

/* there are various ways to declare a function */

function update(coords) {
    var $users = $('.user');
    $users.val(coords.x);
    $users.val(coords.y);
    $users.val(coords.w);
    return $users.val(coords.h);
}
Run Code Online (Sandbox Code Playgroud)

  • 阅读:`https:// www.sitepoint.com/es6-arrow-functions-new-fat-concise-syntax-javascript /` (3认同)
  • @ user4584963类使代码更有效.胖箭头在ES6中指定,适用于今天的JavaScript. (3认同)