小编gno*_*ice的帖子

面向对象的Javascript最佳实践?

我发现自己用Javascript编写了一个大项目.我记得最后一次是冒险,因为hacky JS很快就变得难以理解,我希望这段代码干净利落.

好吧,我正在使用对象来构造一个lib,但是有几种方法可以在JS中定义东西,这意味着在范围,内存管理,名称空间等方面会产生重要影响.EEP:

  • 使用var与否;
  • 在文件中或在(function(){...})()jquery样式中定义事物;
  • 使用this或不使用;
  • 使用function myname()myname = function();
  • 定义对象主体中的方法或使用"原型";
  • 等等

那么在JS中用OO编码时,最佳实践是什么?

学术解释在这里真的很期待.链接到书籍热烈欢迎,只要他们处理质量和稳健性.

编辑:

有一些阅读,但我仍然对上述问题的答案和任何最佳实践非常感兴趣.

javascript oop

251
推荐指数
5
解决办法
6万
查看次数

是否可以在MATLAB中为每个文件定义多个函数,并从该文件外部访问它们?

当我在EE攻读本科学位时,MATLAB要求每个函数都在自己的文件中定义,即使它是一个单行程序.

我现在正在攻读研究生学位,我必须在MATLAB中编写一个项目.这仍然是新版MATLAB的要求吗?

如果可以在文件中放置多个函数,是否有任何限制?例如,文件中的所有函数都可以从文件外部访问,还是只能从与文件同名的函数中访问?

注意:我使用的是MATLAB版本R2007b.

matlab scope file function function-declaration

209
推荐指数
5
解决办法
10万
查看次数

在MATLAB中有一个foreach吗?如果是这样,如果基础数据发生变化,它的表现如何?

MATLAB中是否有foreach结构?如果是这样,如果基础数据发生变化(即对象是否添加到集合中)会发生什么?

syntax matlab

167
推荐指数
7
解决办法
16万
查看次数

如何在MATLAB中将函数应用于矩阵的每一行/列?

例如,v + 1您可以通过说,或者您可以使用该函数,将函数应用于向量中的每个项目arrayfun.如何在不使用for循环的情况下为矩阵的每一行/列执行此操作?

matlab function matrix vectorization

103
推荐指数
6
解决办法
10万
查看次数

如何在MATLAB中获取特定目录下的所有文件?

我需要获取所有这些文件D:\dic并循环它们以进一步单独处理.

MATLAB是否支持这种操作?

它可以在其他脚本中完成,如PHP,Python ......

directory recursion file-io matlab file

97
推荐指数
5
解决办法
16万
查看次数

如何在MATLAB中迭代n维矩阵中的每个元素?

我有个问题.我需要在MATLAB中遍历n维矩阵中的每个元素.问题是,我不知道如何为任意数量的维度做这件事.我知道我可以说

for i = 1:size(m,1)
    for j = 1:size(m,2)
        for k = 1:size(m,3)
Run Code Online (Sandbox Code Playgroud)

等等,但有没有办法为任意数量的维度做到这一点?

arrays iteration matlab matrix multidimensional-array

80
推荐指数
4
解决办法
32万
查看次数

如何计算矩阵中给定值的元素数?

有谁知道如何计算值出现在矩阵中的次数?

例如,如果我有一个1500 x 1矩阵M(向量)存储工作日的值(1 - 7),我怎么能计算星期日(1),星期一(2),...,星期六(7)的数量存储在M

matlab count matrix

72
推荐指数
4
解决办法
17万
查看次数

在MATLAB中,默认情况下变量是否真的是双精度?

这个问题产生于我在进一步调查这个问题后发现的一些奇怪的事情......

我总是将MATLAB变量理解为默认的双精度.所以,如果我要做一些事情,比如声明一个小数点后20位数的变量:

>> num = 2.71828182845904553488;
>> class(num)  % Display the variable type
ans =
double
Run Code Online (Sandbox Code Playgroud)

我希望忽略最后4位数,因为浮点相对精度大约为10 -16:

>> eps(num)
ans =
    4.440892098500626e-016
Run Code Online (Sandbox Code Playgroud)

如果我尝试在小数点后面显示超过16位的数字(使用fprintf或者sprintf),我得到的结果是:

>> fprintf('%0.20f\n', num)
2.71828182845904550000
>> sprintf('%0.20f', num)
ans =
2.71828182845904550000
Run Code Online (Sandbox Code Playgroud)

换句话说,数字17到20都是0.

但是,事情变得奇怪,当我传球num可变精度算术函数符号工具箱,告诉它表示使用的精度21个的位数:

>> vpa(num, 21)
ans =
2.71828182845904553488
Run Code Online (Sandbox Code Playgroud)

什么?!最后4位数字再次出现!当我输入的原始数字存储为双精度变量时,它们是否应该丢失num?既然num传递给它是一个双精度变量vpa,怎么vpa知道它们是什么?

我最好的猜测是,MATLAB内部表示的num精度高于双精度,因为我将它初始化为一个数字,其数字超过小数点,而不是双精度变量可以处理的数字.这真的是发生了什么,还是正在发生的事情?



奖励:如果你还没有上述的偏头痛,这里还有另外一个混乱的根源......

>> num = 2.71828182845904553488;  % Declare …
Run Code Online (Sandbox Code Playgroud)

variables floating-point precision matlab

72
推荐指数
1
解决办法
3万
查看次数

迭代MATLAB中的struct fieldnames

我的问题很容易归纳为:"为什么以下不起作用?"

teststruct = struct('a',3,'b',5,'c',9)

fields = fieldnames(teststruct)

for i=1:numel(fields)
  fields(i)
  teststruct.(fields(i))
end
Run Code Online (Sandbox Code Playgroud)

输出:

ans = 'a'

??? Argument to dynamic structure reference must evaluate to a valid field name.
Run Code Online (Sandbox Code Playgroud)

特别是因为teststruct.('a') 确实有效.并fields(i)打印出来ans = 'a'.

我无法理解它.

matlab matlab-struct

69
推荐指数
3
解决办法
10万
查看次数

MATLAB中的.m和.mat文件有什么区别

当我跟踪我的参考MATLAB脚本时,我找到了带有.mat扩展名的文件.我的问题是:

  1. .mat.m文件有什么区别?
  2. 如何打开带.mat扩展名的文件?

file-io matlab file-extension

44
推荐指数
1
解决办法
7万
查看次数