CoffeeScript

JavaScript

CoffeeScript 克隆对象(深度复制)

28 0

克隆对象(深度复制) 问题 你想复制一个对象,包含其所有子对象。 解决方案clone = (obj) ->if not obj? or typeof obj isnt 'object'return objif obj instanceof Datereturn new Date(obj.getTime()) if obj instanceof RegExpflags = ''flags += 'g' if obj.global?flags += 

JavaScript

CoffeeScript 字符串插值

26 0

字符串插值问题你想创建一个字符串,让它包含体现某个CoffeeScript变量的文本。解决方案使用CoffeeScript中类似Ruby的字符串插值,而不是JavaScript的字符串拼接。插值:muppet = "Beeker" favorite = "My favorite muppet is #{muppet}!"# => "My favorite muppet is Beeker!"square = (x) -> x * x

JavaScript

CoffeeScript 类的混合

39 0

类的混合 问题 你有一些通用方法,你想把他们包含到很多不同的类中。 解决方案 使用mixOf库函数,它会生成一个混合父类。mixOf = (base, mixins...) ->class Mixed extends basefor mixin in mixins by -1 #earlier mixins override later onesfor name, method of mixin::Mixed::[name] = methodMixed...class DeepThoughtansw

JavaScript

CoffeeScript 回调绑定

29 0

回调绑定 问题 你想要把一个回调与一个对象绑定在一起。 解决方案$ ->class Basketconstructor: () ->@products = []$('.product').click (event) =>@add $(event.currentTarget).attr 'id'add: (product) ->@products.push productconsole.log @productsnew Basket() 讨论 通过使用

JavaScript

CoffeeScript 映射数组

22 0

映射数组 问题 你有一个对象数组,想把这些对象映射到另一个数组中,就像 Ruby 的映射一样。 解决方案 使用 map() 和匿名函数,但不要忘了还有列表推导。 electric_mayhem = [ { name: "Doctor Teeth", instrument: "piano" },{ name: "Janice", instrument: "lead guitar" },{ name: "Sgt. Flo

JavaScript

CoffeeScript 查找子字符串

25 0

查找子字符串 问题 你需要搜索一个字符串,并返回匹配的起始位置或匹配值本身。 解决方案 有几种使用正则表达式的方法来实现这个功能。其中一些方法被称为RegExp模式或对象还有一些方法被称为 String 对象。 RegExp 对象 第一种方式是在RegExp模式或对象中调用test方法。test方法返回一个布尔值:match = /sample/.test("Sample text") # => falsematch = /sample/i.test("Sample t

JavaScript

CoffeeScript 双向客户端

32 0

双向客户端 问题 你想通过网络提供持续的服务,与客户保持持续的联系。 解决方案 创建一个双向TCP客户机。 在 Node.js 中net = require 'net'domain = 'localhost' port = 9001ping = (socket, delay) ->console.log "Pinging server"socket.write "Ping"nextPing = -> ping(socket

JavaScript

CoffeeScript 计算复活节的日期

26 0

计算复活节的日期 问题 你需要在给出的年份中找到复活节的月份和日期。 解决方案 下面的函数返回数组有两个要素:复活节的月份( 1-12 )和日期。如果没有给出任何参数,给出的结果是当前的一年。这是在CoffeeScript的匿名公历算法实现的。gregorianEaster = (year = (new Date).getFullYear()) ->a = year % 19b = ~~(year / 100)c = year % 100d = ~~(b / 4)e = b % 4f = ~~((b