gpt4 book ai didi

javascript - 如何使方法私有(private)并在 Coffeescript 中继承它?

转载 作者:行者123 更新时间:2023-12-01 02:47:22 25 4
gpt4 key购买 nike

如何将方法“btnClick”设为私有(private)?

class FirstClass
constructor: ->
$('.btn').click @btnClick

btnClick: =>
alert('Hi from the first class!')

class SecondClass extends FirstClass
btnClick: =>
super()
alert('Hi from the second class!')

@obj = new SecondClass

http://jsfiddle.net/R646x/17/

最佳答案

JavaScript 中没有私有(private),所以 CoffeeScript 中也没有私有(private)。您可以像这样在类级别将内容设为私有(private):

class C
private_function = -> console.log('pancakes')

private_function 只会在 C 中可见。问题是 private_function 只是一个函数,它不是 C 实例上的方法。您可以使用 Function.apply 来解决这个问题或 Function.call :

class C
private_function = -> console.log('pancakes')
m: ->
private_function.call(@)

所以在你的情况下,你可以这样做:

class FirstClass
btnClick = -> console.log('FirstClass: ', @)
constructor: ->
$('.btn').click => btnClick.call(@)

class SecondClass extends FirstClass
btnClick = -> console.log('SecondClass: ', @)

演示:http://jsfiddle.net/ambiguous/5v3sH/

或者,如果您不需要 btnClick 中的 @ 做任何特别的事情,您可以按原样使用该函数:

class FirstClass
btnClick = -> console.log('FirstClass')
constructor: ->
$('.btn').click btnClick

演示:http://jsfiddle.net/ambiguous/zGU7H/

关于javascript - 如何使方法私有(private)并在 Coffeescript 中继承它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10612293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com