小编Ber*_*rgi的帖子

为什么Object.observe()不提供更改回调的数据路径?

Object.observe()回调的changes数组包含具有以下四个属性的对象:

  • 名称
  • 宾语
  • 类型
  • 属性oldValue

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe#Parameters

为什么没有path本地提供的?例:

var ob = {
    foo: [
        {moo: "bar", val: 5},
        {val: 8}
    ]
}

ob.foo[0].val = 1;
// callback should provide path "foo.0.val" or "foo[0].val"
Run Code Online (Sandbox Code Playgroud)

有一个Node.js模块扩展Object.observe()到也包括路径:observed.js,
但我担心本机的性能提升observe()会丢失(如果没有,请你解释它是如何实现的?).这也许可以browserify模块,但无法想象它会在同步环境表现良好,我仍然不知道为什么没有人似乎已经想到了一个额外的path属性.

javascript observers ecmascript-harmony object.observe

1
推荐指数
1
解决办法
1291
查看次数

如何从KDB中的表中检索日期作为值

我从表中检索日期:my_date:从表中选择最大日期

现在我想以这种方式使用my_date:从some_other_table中选择日期(my_date; now)但my_date有类型表 - 我如何提取日期作为在上一个查询中使用的值?

kdb

1
推荐指数
1
解决办法
1488
查看次数

节点v0.10.25中的字符串原型没有'endsWith'

当我试图在节点服务器版本v0.10.25中使用endsWith检查字符串模式时,它抛出了一个错误,

Object ''''''' has no method 'endsWith'
Run Code Online (Sandbox Code Playgroud)

然后我从这个链接中发现,https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith,String.prototype.endsWith将仅来自ECMA6.那么,ecma版本节点v0.10.25实现了什么?未来发布的nodejs,我可以期待ECMA6兼容吗?

javascript node.js

1
推荐指数
1
解决办法
702
查看次数

Javascript数组比C++中的数组效率低

我正在读一本关于JS数据结构的书,它提到:

javascript中的数组被实现为对象,导致它们比使用其他语言(如C++和Java)构建的数组效率低.

为什么?

javascript arrays

1
推荐指数
1
解决办法
579
查看次数

什么是在必要时将`this`变成`forEach`回调的首选方法?

我知道这听起来像是一个意见问题,但我是一名初级JavaScript技能人员,并希望了解以下每种方法获得this一个功能的技术优点和缺点(this当然,它有自己的功能).

让我们说我写 - 这是我的一个现实生活中的例子 -

Calculator.prototype.Initialize = function () {
    // Fill in all regions in the RegionsChecked array
    this.Data.forEach(function(region){
        this.RegionsChecked.push(region.RegionName);
    });
    …
Run Code Online (Sandbox Code Playgroud)

我意识到了

"哎呀,thisin this.RegionsChecked应该实际引用Calculator调用Intialize 函数的函数."

我要么通过这样做来解决这个问题

var that = this;
this.Data.forEach(function(region){
    that.RegionsChecked.push(region.RegionName);
});
Run Code Online (Sandbox Code Playgroud)

要么

(function(calc){
    this.Data.forEach(function(region){
        calc.RegionsChecked.push(region.RegionName);
    });
})(this);
Run Code Online (Sandbox Code Playgroud)

我想知道哪个更好或者有更好的方式(以及为什么).

javascript oop inheritance

1
推荐指数
1
解决办法
60
查看次数

Scala中类参数的val是什么?

我有时会看到类似下面的东西.

class Test(val str: String){
}
Run Code Online (Sandbox Code Playgroud)

我写了一些示例代码,val但我没有看到常见声明和方式之间有任何区别val.

他们之间有什么区别?什么时候应该使用?

scala

1
推荐指数
1
解决办法
178
查看次数

如何在kdb的列表中对连续相同的数字求和?

我有一个这样的列表:

a:1 1 1 1 2 3 1 1 4 4 4 5 6 4
Run Code Online (Sandbox Code Playgroud)

如何将所有连续相同的数字相加a,以便它将变为:

a:4 2 3 2 12 5 6 4
Run Code Online (Sandbox Code Playgroud)

1
推荐指数
1
解决办法
466
查看次数

是否可以强制 Node.js 进行 JIT 编译代码?

由于 Node.js 使用 V8 js 引擎,我想它的工作方式与 v8 相同,并且仅在 CPU 密集型或被多次调用时优化/jit 编译函数或某些代码段。

考虑到我正在制作一个服务器并且我想从我的代码中获得最佳性能,并且内存不是问题,是否有办法“强制”我的所有代码进行 JIT 编译和优化以提高性能从它第一次运行的那一刻起?

javascript performance v8 node.js

1
推荐指数
1
解决办法
2621
查看次数

React 打字稿,类型“typeof TodoFilterItem”上不存在属性“propTypes”。TS2339

我有一个界面

interface ITodoFilterItem  {
  name: string,
  filter: string,
  filterTodos: any
}
Run Code Online (Sandbox Code Playgroud)

以及引用它的同一个文件中的一个类

class TodoFilterItem extends Component<ITodoFilterItem> {
  constructor (props:ITodoFilterItem) {
    super(props);
    this.handleFilter = this.handleFilter.bind(this);
  }
Run Code Online (Sandbox Code Playgroud)

但是当我尝试在这个文件的底部添加 propTypes 时

TodoFilterItem.propTypes = {
  name: PropTypes.string,
  filter: PropTypes.string,
  filterTodos: PropTypes.any
}
Run Code Online (Sandbox Code Playgroud)

我得到:


Property 'propTypes' does not exist on type 'typeof TodoFilterItem'.  TS2339
Run Code Online (Sandbox Code Playgroud)

仅供参考:我import PropTypes from 'prop-types';在顶部

typescript reactjs react-proptypes

1
推荐指数
1
解决办法
1111
查看次数

为什么 if(1) 比 if(true) 快

我正在尝试在 JavaScript 和画布中制作康威的生活游戏,我有一个 1280x720 的矩阵用于存储单元格数据,我目前将数据存储为 1 = 活着,0 = 死了,然后当我检查如果一个细胞还活着,我只是这样做:if(matrix[i][j]) 我很好奇这是否可以改进,并在https://jsbench.me/ 上做了一些测试, 复制了一个类似的场景,并注意到如果使用“true/false”,整个​​事情+-11% 慢,为什么会这样?不是应该更快吗?

示例基准,只需将 1 更改为 true 即可测试其他场景

let array = []
for(let i = 0; i<1000000; i++){
   array.push(1)
}
let sum = 0
for(let i = 0; i<1000000;i++){
    if(array[i]){
        sum++
    }
}
Run Code Online (Sandbox Code Playgroud)

javascript arrays performance v8

1
推荐指数
1
解决办法
105
查看次数