gpt4 book ai didi

inheritance - 如何在使用 Coffeescript 时扩展主干模型并保持默认值

转载 作者:行者123 更新时间:2023-12-02 00:13:07 26 4
gpt4 key购买 nike

鉴于我在 coffeescript 中有以下继承。

我得到一个错误,因为“哺乳动物”似乎没有为 myCat 定义。

我在其他一些帖子中读到,我实际上必须将 defaults 设置为一个函数来继承默认值。但是我如何使用 coffeescript 做到这一点?

class Animal extends Backbone.Model
defaults:
mammal: true

class Cat extends Animal
defaults:
furColor: "gray"

myCat = new Cat
alert(myCat.get('mammal'))

最佳答案

最简单的方法是为 defaults 使用函数,然后你的 Cat 可以简单地调用 super 并添加一些东西:

class Animal extends Backbone.Model
defaults: ->
mammal: true

class Cat extends Animal
defaults: ->
_(super()).extend(furColor: "gray")

您可以在 Animal 中保留非功能性 defaults,但这会变得丑陋,所以请不要打扰。

请注意 _.extend改变它的第一个参数,所以通常你想说类似 _({}).extend(...) 的东西,以避免在你不拥有的东西上涂鸦。在这种情况下,您知道每次调用 Animal#defaults 时都会返回一个全新的对象,因此您不必担心。如果你是偏执狂,你可以这样做:

defaults: ->
_({}).extend(super(), furColor: 'gray')

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

关于inheritance - 如何在使用 Coffeescript 时扩展主干模型并保持默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14524276/

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