小编Der*_*ang的帖子

说JavaScript是一种"单线程"语言是否准确?

我多次听过这种说法,但我个人认为这没有多大意义.我认为人们在实践中将JavaScript作为语言规范和JavaScript混淆(浏览器,节点等).当然,在大多数情况下,JavaScript是在单线程环境中执行的; 但AFAIK在语言规范中没有任何要求它.我认为这就像说Python被"解释",而实际上它完全是一个实现问题.

那么,说JavaScript是一种"单线程"语言是否准确?

javascript

6
推荐指数
2
解决办法
907
查看次数

Chrome扩展程序:以编程方式访问地址栏?

我正在尝试开发一个Chrome扩展程序,允许我在打开新标签后直接输入地址栏.但是,我找不到以编程方式访问地址栏的方法.谁能在这个问题上帮助我?

谢谢!!

google-chrome google-chrome-extension

5
推荐指数
0
解决办法
720
查看次数

在布尔上下文中使用时,为什么要将对象转换为布尔值?

我明白!!将任何东西转换为布尔值,但为什么要这样做:

if (!!someObject) { ... }
Run Code Online (Sandbox Code Playgroud)

当你可以做的时候:

if (someObject) { ... }
Run Code Online (Sandbox Code Playgroud)

编辑:

只是为了澄清,我只是问为什么你会像第一个例子中那样编写代码,而不是第二个例子中的代码.有任何实际差异吗?

javascript

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

以这种方式在原型上定义函数的缺点是什么?

通常人们会编写如下代码:

function Shape() {
  this.x = 0;
  this.y = 0;
}

Shape.prototype.move = function(x, y) {
  this.x += x;
  this.y += y;
}
Run Code Online (Sandbox Code Playgroud)

但是,我试图想出一种方法来定义原型上的函数,而不将函数定义与构造函数分开.这是我得到的:

Object.prototype.method = function(name, func) {
  if (typeof(this.constructor.prototype[name]) === 'undefined') {
    this.constructor.prototype[name] = func
  }
}
Run Code Online (Sandbox Code Playgroud)

这允许您执行以下操作:

function Shape() {
  this.x = 0;
  this.y = 0;

  this.method('move', function(x, y) {
    this.x += x;
    this.y += y;
  })
}
Run Code Online (Sandbox Code Playgroud)

而且无论您创建多少次形状,该功能都只会被定义一次.

我知道扩充Object.prototype不被认为是一种好习惯.但除此之外,这种方法有任何缺点吗?

编辑:

约翰提出了一个好点; 我应该做的method不是可枚举的.这是修订版:

Object.defineProperty(Object.prototype, 'method', {
    value: function(name, func) {
        if (typeof(this.constructor.prototype[name]) === …
Run Code Online (Sandbox Code Playgroud)

javascript prototype function

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

在静态方法中引用自己的类

是否有在静态方法中引用自己的类的简写?

说我有这段代码:

class SuperLongClassName(object):

    @staticmethod
    def sayHi():
        print 'Hi'

    @staticmethod
    def speak():
        SuperLongClassName.sayHi()  # Is there a shorthand?
Run Code Online (Sandbox Code Playgroud)

python

2
推荐指数
2
解决办法
424
查看次数

转到Light Table中的任何文件

在Sublime Text中,您可以使用ctrl+p并输入文件名转到任何文件.Light Table中是否有类似的功能?我了解如何编辑用户键映射; 只是找不到相关的命令.

lighttable

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

Elixir/Erlang中选择性`receive`的表现

当我有这样的代码:

receive do
  {:hello, msg} -> msg
end
Run Code Online (Sandbox Code Playgroud)

让我们说N我的邮箱里有邮件.觉得这次特定消息的性能O(1),O(N)或者介于两者之间?

erlang elixir

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

编译C++:未定义的引用

我是C++的新手,我正在尝试编译我的代码.我正在使用的命令是g++ -o main --std=c++11 main.cpp channel.cpp.但是我收到以下错误消息:

/tmp/ccLuJs81.o: In function `main':
main.cpp:(.text+0x26): undefined reference to `gsc::Channel<int>::Channel()'
main.cpp:(.text+0x3a): undefined reference to `gsc::Channel<int>::put(int)'
main.cpp:(.text+0x4e): undefined reference to `gsc::Channel<int>::get(bool)'
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

有谁知道这里发生了什么?非常感谢!

c++ gcc compiler-errors compilation g++

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