小编Off*_*rmo的帖子

TypeError:无法在字符串'BAR'上创建属性'FOO'

我们的应用程序中的错误(现在已修复)代码触发了此错误:

TypeError: Cannot create property 'FOO' on string 'BAR'
Run Code Online (Sandbox Code Playgroud)

但Javascript完全允许在字符串变量上设置自由属性.我刚在Chrome控制台中尝试过:

'BAR'.FOO = 'hello'
'BAR'['FOO'] = 'hello'
Run Code Online (Sandbox Code Playgroud)

而且效果很好.

那么JS解释器在哪个上下文中触发了这个错误?

原始代码用Typescript编写,然后用Babel编译.这是运行时错误.我认为这与打字稿无关,因为其他人报告类似的运行时错误,例如.在这里这里

javascript runtime-error

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

javascript继承中正确的原型做法是什么?

我已经阅读了几篇关于js继承的文章(这一篇,这一篇,这一篇,等等)

在Mozilla的这篇文章中,"经典"继承如下所示:(我统一的例子)

// inherit Base
function Derived() { ... }
Derived.prototype = new Base();            <-------
Derived.prototype.constructor = Derived;   <-------
Run Code Online (Sandbox Code Playgroud)

但是在本文中我看到:

// inherit Base
function Derived() { ... }
Derived.prototype = Object.create(Base.prototype);    <-------
Derived.prototype.constructor = Derived;
Run Code Online (Sandbox Code Playgroud)

而且我也看到了这个:

Derived.prototype = Base.prototype;
Run Code Online (Sandbox Code Playgroud)

而且我也进行了实验,但未找到constructor矫揉造作的用法:

Derived.prototype.constructor = Derived; <--- it still work if I skip this line
Run Code Online (Sandbox Code Playgroud)

如果我跳过此行,无论如何都要new Derived()正确调用Derived().

那么1)什么是正确的:

  1. Derived.prototype = new Base();
  2. Derived.prototype = Object.create(Base.prototype);
  3. Derived.prototype = …

javascript inheritance

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

如何在现代C++中将float转换为int

奇怪,因为它可能看起来,我无法找到如何干净地转换floatint.

这种技术

int int_value = (int)(float_value + 0.5);
Run Code Online (Sandbox Code Playgroud)

触发一个

warning: use of old-style cast
Run Code Online (Sandbox Code Playgroud)

在gcc.

那么,什么是现代风格,简单的方式转换floatint?(我当然接受精度的损失)

c++ floating-point casting

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

如何检查我的 Google 同意实施是否有效?(标签管理器、网站)

我们正在使用Google Analytics 同意模式(测试版)。我相信我的实现是正确的,遵循官方文档。但是,无论我选择加入还是选择退出跟踪,我都看不到(在 GTM“预览模式”下)行为的差异。在这两种情况下,标签都会被触发并标记为“成功”。我想知道我的实施是否有效。(当然我在测试会话之间清除cookies和缓存)

如果同意被拒绝,我应该看到什么或不应该看到什么?我应该看到什么差异可以告诉我是否考虑了同意?如何判断 GTM 是否正在跟踪?

有关信息,我的实现:

<head>
<script>
  // gtm snippet...
</script>
<script>
    window.dataLayer = window.dataLayer || [];
    function gtag() { dataLayer.push(arguments); }
    gtag("consent", "default", {
        // yes, everything is granted by default (not an EU site)
        ad_storage: "granted",
        analytics_storage: "granted",
        functionality_storage: "granted",
        personalization_storage : "granted",
        security_storage : "granted",
        wait_for_update: 10000, // comfortable timer for starter, will fine-tune it later
    });
    dataLayer.push({ 'event': 'default_consent' });
</script>

//later after the main js is loaded
gtag("consent", …
Run Code Online (Sandbox Code Playgroud)

javascript browser google-analytics google-tag-manager

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

.*sed太贪心了

我想从bash中的某些字符串中提取版本号而不使用太多额外的包.到目前为止我试过了sed.

这是API:

3.81-8.1ubuntu1.1    should give :  3.81
2.68-1ubuntu2        should give :  2.68
1:1.11.3-1ubuntu2    should give :  1.11.3
Run Code Online (Sandbox Code Playgroud)

到目前为止,这是我的sed命令:

echo ... | sed -r 's/.*([0-9\.]+).*/\1/'
Run Code Online (Sandbox Code Playgroud)

然而,开场.*太贪心,尤其是最后一个案例.我已经尝试了一些.*?,并.\{-}没有任何成功.

我可以两次通过,但我宁愿学习如何在一个中完成.

regex grep sed

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

使用webdriver.js,如何获取<select>的选定选项?

很多java和C#的答案,但我找不到如何在javascript中做到这一点.似乎API不同......

javascript selenium selenium-webdriver

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

TypeError:Backbone.$未定义

在我使用backbone.js的单页应用程序中,我收到此错误:TypeError: Backbone.$ is undefined 尝试访问同步API时.

同步API之前正在运行.我找不到我打破的东西......

javascript jquery backbone.js

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

jquery find('>')的含义和用法

我正在研究一个javascript代码:

$('div').html(<some text>).find('>')

看看jQuery文档,我无法理解find('>')应该做什么.

而且,在导航控制台中进行实验时,我得到了奇怪的结果:

$('div').html('to<br/>to').find('>') - > [ <br>?, <br>?, <br>?]

$('div').html('to<a/>to').find('>') - > [ <a>?</a>?, <a>?</a>?, <a>?</a>?]

为什么重复3次?

所以,任何人都可以启发我这个奇怪的事find('>')吗?

html javascript jquery

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