охуительными вопросами.
На этот раз он утверджает что поскольку в JS apply принимает дополнительный параметр — объект, this которого будет активным во время функции, которую вызывает apply, то это является более мощной АБОСРАКЦИЕЙ.
Хуйта канеш. От нечего делать накидал подобную херню в схемке. ths лексически биндится на передаваемый объект в теле функции.
```
#lang racket
(require syntax/parse/define)
(require racket/stxparam)
(define-syntax-parameter ths
(lambda (stx) (raise-syntax-error #f "Not used inside js-apply!" stx)))
(define-simple-macro (js-apply obj:expr fn:expr args...)
(let ([this-obj obj])
(syntax-parameterize ([ths (make-rename-transformer #'this-obj)])
(apply fn args...))))
(js-apply (new (class object%
(super-new)
(init-field [x 10])))
(lambda (y) (+ y (get-field x ths)))
(list 1))
;; 11
```
На лоре опять выходит на связь упоротый жаваскриптер со своими На этот раз он утверджает что поскольку в JS apply принимает дополнительный параметр — объект, this которого будет активным во время функции, которую вызывает apply, то это является более мощной АБОСРАКЦИЕЙ.
Хуйта канеш. От нечего делать накидал подобную херню в схемке. ths лексически биндится на передаваемый объект в теле функции.
```
#lang racket
(require syntax/parse/define)
(require racket/stxparam)
(define-syntax-parameter ths
(lambda (stx) (raise-syntax-error #f "Not used inside js-apply!" stx)))
(define-simple-macro (js-apply obj:expr fn:expr args...)
(let ([this-obj obj])
(syntax-parameterize ([ths (make-rename-transformer #'this-obj)])
(apply fn args...))))
(js-apply (new (class object%
(super-new)
(init-field [x 10])))
(lambda (y) (+ y (get-field x ths)))
(list 1))
;; 11
```