首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用super时,coffeescript中出现意外的else

在CoffeeScript中,使用super关键字可以调用父类中的同名方法。然而,在某些情况下,当使用super时可能会出现意外的else

这个问题通常出现在当父类和子类中都存在相同的方法,且在子类的方法中调用了父类的方法时。在这种情况下,如果在子类的方法中使用了super关键字,CoffeeScript会尝试在父类和子类中查找与当前方法相同的方法。如果找到了父类中的方法,CoffeeScript会将这个方法返回的结果作为super的返回值,但是如果没有找到,则会出现意外的else错误。

为了解决这个问题,可以使用super关键字之前,通过将父类方法的引用存储在变量中来避免这种情况。这样,无论是否存在同名方法,都可以确保调用的是父类中的方法。

下面是一个示例:

代码语言:txt
复制
class Parent
  foo: ->
    "Parent's foo method"

class Child extends Parent
  foo: ->
    parentFoo = Parent::foo
    result = parentFoo.call(this)  # 调用父类的方法
    result + " and Child's foo method"

child = new Child()
console.log(child.foo())  # 输出 "Parent's foo method and Child's foo method"

在这个示例中,我们在子类的方法中存储了父类方法的引用Parent::foo,然后通过call方法调用了父类的方法,并将结果与子类的方法进行拼接。这样可以避免意外的else错误,并正确地调用父类方法。

请注意,这只是解决意外的else错误的一种方法,具体的解决方案可能根据实际情况而有所不同。关于CoffeeScript的更多信息和其他语法特性,可以参考腾讯云官方文档中的CoffeeScript简介

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 使用策略+工厂模式彻底干掉代码if else

    对于业务开发来说,业务逻辑复杂是必然,随着业务发展,需求只会越来越复杂,为了考虑到各种各样情况,代码不可避免会出现很多if-else。...一旦代码if-else过多,就会大大影响其可读性和可维护性。 ? 首先可读性,不言而喻,过多if-else代码和嵌套,会使阅读代码的人很难理解到底是什么意思。尤其是那些没有注释代码。...其实,if-else是有办法可以消除掉,其中比较典型并且使用广泛就是借助策略模式和工厂模式,准确说是利用这两个设计模式思想,彻底消灭代码if-else。...这样代码,有很多if-else,并且还有很多if-else嵌套,无论是可读性还是可维护性都非常低。 那么,如何改善呢? 策略模式 接下来,我们尝试引入策略模式来提升代码可维护性和可读性。...其实,在之前《如何给女朋友解释什么是策略模式?》一文,我们介绍了很多策略模式优点。但是,策略模式使用上,还是有一个比较大缺点: 客户端必须知道所有的策略类,并自行决定使用哪一个策略类。

    4.2K30

    Python循环else、break、continue使用方法详解(python工程狮)

    pythonelse, break, continue一般搭配使用 我们常用循环包括:for循环以及while循环,他们结合else, break, continue使用方法和结果都是一样...我们通过下面的几个案例来交接一下详细用法: for循环语句是python循环控制语句。...通常用来遍历某一对象(字符串、列表、元组、字典等),它具有一个附带可选else块,主要用于处理for语句中包含break语句 当for循环未被break终止,程序会执行else语句 break...在需要终止for循环 continue 跳过位于其后语句,开始下一轮循环 当for/while循环正常执行之后,程序会继续执行else语句中内容 以下示例,将结合range()函数讲解,python...跳出而中断,不会再执行else内容!

    2.5K20

    解析XML数据:使用xml2js库轻松进行XML解析

    这个方法适用于xml2js0.2.3版本及以上。使用CoffeeScript,代码如下:CoffeeScript 可能比较小众,但是官方文档有举例了相关内容,故本文进行保留。...你还可以使用CoffeeScript来进一步减少代码冗余:fs = require 'fs',xml2js = require 'xml2js'parser = new xml2js.Parser()...从0.2.8开始,你可以不使用它,在这种情况下,xml2js会帮助你添加它,以保证不会再出现意外和莫名其妙bug!...不使用解析器直接解析:直接调用xml2js库parseStringPromise方法对XML数据进行解析,通过.then()方法处理解析成功结果,通过.catch()方法处理解析过程错误。...normalize:将名称转换为小写(当 options.normalize 设置为 true 自动使用)firstCharLowerCase:将首字母转换为小写。

    41510

    一篇文章教会你使用Javasuper关键字基本用法

    } } 输出结果是: 我是英国短毛猫,今年2岁喵喵喵~~~~ 从上面代码,Cat类是继承Animal类shout()方法,当Cat类继承Animal类还没有shout()方法,调用Animal...方法重写就是在Cat子类定义一个shout()方法对父类方法进行重写。在调用Cat类对象shout()方法,只会调用子类重写该方法,没有去调用父类shout()方法。...2.如果当子类重写父类方法后,子类对象是不能访问父类被重写方法,可以使用super关键字访问父类成员 3.super关键字调用父类成员变量和成员方法格式 super.成员变量 Super.成员方法...从上面代码,首先定义一个Animal类,在Dog类继承Animal类,然后重写了父类shout()方法,在子类中使用super.shout()调用父类重写方法,在show()方法访问父类属性,super...从上面的代码,首先是定义了一个Fruit类,在Fruit类定义了有参数构造方法。定义Cherry继承Fruit类,调用父类有参数构造方法。

    38620

    使用jQueryhover事件遇到一个小问题

    它在鼠标移入时候执行了一次,移出时候又会执行一次(通过控制台查看可以看到我们代码console.log(1)1总共被输出了两次)。...jQueryhover()方法中一共封装有两个function函数,第一个是在移入时执行, 第二个是在移出执行,而当我们像上面一样只写了一个function函数时候, 它就会默认这个function...函数就是我们想让它在移入和移出都被执行函数, 也就相当于将这个函数执行了两遍。...}) 当然,像这些效果的话,其实也有很多别的方法可以完成, 比如我们也可以使用jQuery一些其他鼠标事件(例如:onmouseover、onmouseout、onmouseenter...、onmouseleave等)来实现, 没必要一味地使用hover()来进行事件编写。

    1.7K20

    CSS3与页面布局学习总结(七)——前端预处理技术(Less、Sass、CoffeeScript、TypeScript)

    ,变量名由字母、数字、_和-组成 2)、没有先定义后使用规定; 3)、以最后定义值为最终值; 4)、可用于rule值、rule属性、rule属性部件、选择器、选择器部件、字符串拼接; 5)、定义...注意:路径不要使用中文,切记!...不良部分使用,只留下精华,让代码减少出错率,更容易维护 在很多常用模式实现上采用了JavaScript最佳实践 CoffeeScript生成JavaScript代码都可以完全通过JSLint...3.1、安装 CoffeeScript 编译器本身是 CoffeeScript, 使用了 Jison parser generator....因此在PC端开发时候,要注意IE9以下兼容,移动端开发,可以比较放心了。

    2.4K50

    业务代码“if-else”太多被吐槽,使用状态模式优雅推动业务生命周期流转

    也就是说当我们设计一个模块,一个实体对象,应该在不修改自身源代码情况下,能够扩展新行为。以上这句话读完,不能修改和能够扩展是自相矛盾,如何才能实现并满足开闭原则呢?...这样处理之后,系统需要扩展功能,我们只要扩展新子类就可以。对于子类修改我们也可以重新实现一个新子类。...状态模式使用场景:用于解决系统复杂对象状态转换以及不同状态下行为封装问题。对有状态对象,把复杂多样状态从对象抽离出来,封装到专门状态类,这样就可以让对象状态灵活变化。...抽象状态State角色:这是一个接口,用来封装环境类对象一个特定状态相关行为。...对象需要根据自身变量的当前值改变行为,不期望使用大量 if-else 语句。对于某些确定状态和行为,不想使用重复代码。

    30820

    使用 jquery 插件操作 input 同步 vue 绑定变量办法

    发表于2018-05-102019-01-01 作者 wind 为什么要同步到 vue 上绑定变量呢,因为如果我们不更新绑定变量值,vue 下次刷新组件时候,就会将旧值更新到 input...我一般使用方法是在 vue 定义自定义指令,函数可以获取到 vnode,有了 vnode 就可以获取vnode.context也就是 vue 对象,有了 vue 对象就可以将新值设置到v-model...绑定那个变量上,因为这是指令,还不确定有多少个地方使用到了这个指令,所以可以通过从 el 上获取到一些信息,来帮助获取对应 v-model 对象。...例如下面这个自动完成 jquery 插件例子: Vue.directive('myautocomplete', { inserted: function (el,binding

    1.7K10

    Python中使用deepdiff对比json对象,对比如何忽略数组多个不同对象相同字段

    最近忙成狗了,很少挤出时间来学习,大部分时间都在加班测需求,今天在测一个需求时候,需要对比数据同步后数据是否正确,因此需要用到json对比差异,这里使用deepdiff。...一般是用deepdiff进行对比时候,常见对比是对比单个json对象,这个时候如果某个字段结果有差异,可以使用exclude_paths选项去指定要忽略字段内容,可以看下面的案例进行学习:...那么如果数据量比较大的话,单条对比查询数据效率比较低,因此,肯呢个会调用接口进行批量查询,然后将数据转成[{},{},{}]列表形式去进行对比,那么这个时候再使用exclude_paths就无法直接简单排除某个字段了...从上图可以看出,此时对比列表元素的话,除非自己一个个去指定要排除哪个索引下字段,不过这样当列表数据比较多时候,这样写起来就很不方便,代码可读性也很差,之前找到过一个用法,后来好久没用,有点忘了,今晚又去翻以前写过代码记录...,终于又给我找到了,针对这种情况,可以使用exclude_regex_paths去实现: 时间有限,这里就不针对deepdiff去做过多详细介绍了,感兴趣小伙伴可自行查阅文档学习。

    71520

    详解Python项目开发自定义模块对象导入和使用

    背景:1)任何一个Python程序文件既可以直接执行,也可以作为模块导入再使用其中对象;2)对于大型系统开发,一般不会把所有代码放到单个文件,而是根据功能将其分类并分散多个模块,在编写小型项目最好也能养成这样好习惯...本文介绍Python自定义模块对象导入和使用。...add,这是因为child文件夹被认为是一个包,而add.py是包子模块,并没有随着child一起导入。...继续执行下面的代码: >>> import child.add >>> child.add.add(3,5) 8 自定义模块对象成功被导入并能够正常使用,也就是说,如果要使用对象在子模块,应该单独使用...原因在于,如果文件夹作为包来使用,并且其中包含__init__.py文件,__init__.py文件特殊列表成员__all__用来指定from ... import *哪些子模块或对象会被自动导入

    3K50

    常见问题之Java——使用lombok@Slf4jlog缺失

    常见问题之Java——使用lombok@Slf4jlog缺失 背景 日常我们开发,我们会遇到各种各样奇奇怪怪问题(踩坑o(╯□╰)o),这个常见问题系列就是我日常遇到一些问题记录文章系列...,这里整理汇总后分享给大家,让其还在深坑小伙伴有绳索能爬出来。...开发环境 系统:windows10 JDK:openjdk11 开发工具:IDEA 教育版 框架:SpringBoot 包管理:Gradle 内容 本节问题:常见问题之Java——使用lombok@...API接口管理平台仓库,有需要可以进行了解或下载需要代码。...本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。

    3.6K10

    使用 C# dynamic 关键字调用类型方法可能遇到各种问题

    你可以使用 dynamic 来定义一个变量或者字段,随后你可以像弱类型语言一样调用这个实例各种方法,就像你一开始就知道这个类型所有属性和方法一样。...但是,使用不当又会遇到各种问题,本文收集使用过程可能会遇到各种问题,帮助你解决掉它们。..."); object GetSomeInstance() { return 诡异东西; } 我们 GetSomeInstance 明明返回是 object,我们却可以调用真实类方法...接下来讲述使用 dynamic 过程可能会遇到问题和解决方法。 编译错误:缺少编译器要求成员 你初次在你项目中引入 dynamic 关键字后,会出现编译错误,提示 “缺少编译器要求成员”。...{0} 是类型名称,而 {1} 是使用 dynamic 访问属性或者方法名称。

    63930
    领券