gpt4 book ai didi

javascript - Coffeescript 类变量字段 - 保持初始化干净

转载 作者:行者123 更新时间:2023-11-28 01:14:16 27 4
gpt4 key购买 nike

我的程序中有一些基本对象类。它们既有函数又有数据字段。我刚刚意识到,如果我在 construct 方法之外声明一些默认数据字段值,那么它们将不会在 object = new Class params 类型的初始化中重置。

class Book extends DBNode

language: 'en'
title: ''
year: 0

# function
bookReaded: (callback)->

# db stuff
callback()

即:在这种情况下,创建一个新的 Book 对象然后编辑其标题将导致以下实例被初始化,标题字段已设置为最后一个实例的值。

class Book extends DBNode

constructor: ->

@language: 'en'
@title: ''
@year: 0
super(props, user, cb)

# function
bookReaded: (callback)->

# db stuff
callback()

在这种情况下,字段每次都会正确重置,并且标题字段将在每次初始化时设置为空白。

嗯 - 你会说 - 显然:它们是原型(prototype)。你会说。我现在明白了。

无论如何,这个问题对我来说仍然有点模糊,所以我想问一下,仅仅在构造函数中声明所有变量字段是否足以提供所需的所有跨实例安全性,或者是否还有其他一些事情应该做在处理原型(prototype)而不是简单对象时请记住。

当我在服务器端使用它时,我主要关心的是同时执行可能会搞乱这种全局范围情况的东西,以及我是否应该考虑仅使用普通对象(我确实使用继承在某些功能上有优势,但没有什么是通过几行额外的代码无法实现的)...

最佳答案

Is just declaring all variable fields in the constructor enough to provide all cross-instance security needed

这不是关于安全性,而是关于功能。但是,是的,如果您在构造函数中分配所有可变属性,那么您是安全的(对于示例中的原始值,实际上没有什么区别)。

As I'm using it server side, my main concern is about the simultaneous execution of stuff

JavaScript 中的代码不会同时执行。即使在服务器端也不行。

Should I consider using only normal objects (I do make use of inheritance advantages in some functions, but nothing that cannot be achieved with a couple of extra lines of code)...

没有。继承的目的是保存这些代码行。此外,通过将方法放在原型(prototype)上,您可以提高代码的性能。

关于javascript - Coffeescript 类变量字段 - 保持初始化干净,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24031163/

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