Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 主干模型默认值:null?空字符串?空数组?_Javascript_Json_Web Services_Backbone.js - Fatal编程技术网

Javascript 主干模型默认值:null?空字符串?空数组?

Javascript 主干模型默认值:null?空字符串?空数组?,javascript,json,web-services,backbone.js,Javascript,Json,Web Services,Backbone.js,在我的主干应用程序中,当我从HTTP JSON API检索数据时,模型被实例化。此服务的值各不相同,因此为了保持一致性,我决定提供默认值,以便所有模型至少共享相同的基本属性。例如,用于模板化 我只是想知道:分配给每个属性的最佳值是什么?有些是字符串,有些是数字,有些是数组。不确定默认情况下是否应该为每个人分配null(这就是我现在正在做的),或者是否应该为将来的字符串使用空字符串“”,为将来的数组使用空数组[]。我通常分配null值。我不太可能使用null作为传递的实际值,因此如果我的应用程序中

在我的主干应用程序中,当我从HTTP JSON API检索数据时,模型被实例化。此服务的值各不相同,因此为了保持一致性,我决定提供
默认值
,以便所有模型至少共享相同的基本属性。例如,用于模板化


我只是想知道:分配给每个属性的最佳值是什么?有些是字符串,有些是数字,有些是数组。不确定默认情况下是否应该为每个人分配
null
(这就是我现在正在做的),或者是否应该为将来的字符串使用空字符串
“”
,为将来的数组使用空数组
[]

我通常分配
null
值。我不太可能使用
null
作为传递的实际值,因此如果我的应用程序中仍然存在
null
的内容,我可以判断出某个地方出了问题


顺便说一下,通过
默认值
属性指定空数组或对象时要小心。执行此操作时,阵列/对象将在模型的每个实例中引用,而不是复制到每个实例中,因此它们都将修改相同的数据。

这取决于您需要什么。例如,如果您有一个日期字段,则可以使用当前时间作为默认值。对于阵列,它将使用
[]
。字符串可以是null或
,您喜欢检查的(
str==”
typeof str==“undefined”
)我将主要在模板中使用models属性(使用手柄),所以我只需要检查值是否错误。当前时间在我的应用程序中不是一个选项。我不确定我是否理解你的第二段:你是说,创建一个空数组/对象会在内存中创建一个值,每个实例在创建时都会指向该值?我在第300行的主干源代码(0.9.2)中看到赋值是像
options.unset?立即删除[attr]:现在[attr]=val(是now[attr]=val真正为实例添加了值)。那么你是说如果我创建一个空数组/对象,这个非常空的数组/对象在实例化时会被我集合的每个模型引用?@DjebbZ:如果你
默认值:{a:[]}
,那么使用默认值的所有实例都将共享相同的默认数组,默认值将被复制。但是,您可以说
defaults:function(){return{a:[]}}
来获得每个实例的不同默认值。通常,如果任何值是可变对象,您都会希望使用默认值的函数形式。谢谢各位,在我的例子中,我将坚持使用
null
。我不需要
函数
形式的
默认值
,因为它充满了
null
值。顺便问一下,如果我们使用@muistooshort所说的函数形式,这是否意味着在实例化模型时,如果属性
a
未被覆盖,那么我的程序将有更大的内存占用?