小编Dip*_*ndu的帖子

释放Javascript对象使用的内存

我应该自己释放分配的内存,还是有一种垃圾收集器?

可以在JavaScript中使用以下代码吗?

function fillArray()
{
  var c = new Array;
  c.push(3);
  c.push(2);
  return c;
}

var arr = fillArray();
var d = arr.pop()
Run Code Online (Sandbox Code Playgroud)

谢谢

javascript arrays garbage-collection

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

事件委托,Event.target与Event.currentTarget

MDN Event.target参考中,有一个关于实现事件委派的示例:

事件委托示例

// Assuming there is a 'list' variable containing an instance of an  
// HTML ul element.
function hide(e) {
    // Unless list items are separated by a margin, e.target should be  
    // different than e.currentTarget
    e.target.style.visibility = 'hidden';
}

list.addEventListener('click', hide, false);

// If some element (<li> element or a link within an <li> element for  
// instance) is clicked, it will disappear.
// It only requires a single listener to do that
Run Code Online (Sandbox Code Playgroud)

部分示例不清楚

我在示例中不理解的是这条评论: …

javascript dom-events

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

查找BST中的所有子树,其键位于给定范围内

我在最近的一次采访中得到了这个问题:给定一个BST,其节点包含一个Integer作为值,找到其节点落在整数X(min)和Y(max)之间的所有子树,其中X <Y.这些子树不能相互重叠.

我已经解决了这个问题的变化,例如 - 打印在给定范围内的BST的键.但无法弄清楚这一点,因为它涉及查找满足非常特定约束的主图/树的所有连通子图.任何指针/帮助/伪代码都很受欢迎.

补充说明 -

  1. 该问题将节点的数据结构定义为具有左指针,右指针和整数值.没有办法标记节点.
  2. 有人要求用Java解决这个问题.
  3. 当我说子树/子图时,我的意思是一组连接的节点,而不是一个不相交的节点列表.对困惑感到抱歉.

algorithm tree-traversal binary-search-tree range-query

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

如何在字符串中首次出现preg_match

我试图From:address从电子邮件正文中提取.这是我到目前为止:

$string = "From: user1@somewhere.com This is just a test.. the original message was sent From: user2@abc.com";

$regExp = "/(From:)(.*)/";
$outputArray = array();
if ( preg_match($regExp, $string, $outputArray) ) {
print "$outputArray[2]";
}
Run Code Online (Sandbox Code Playgroud)

我想获得第一次出现From: ..任何建议的电子邮件地址?

php regex preg-match

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

如何限制迭代器只返回子类的实例?

我有一些实现可迭代的基类

public class EntityCollection implements Iterable<Entity> {

    protected List<Entity> entities;

    public EntityCollection() {
        entities = new ArrayList<Entity>();
    }

    public Iterator<Entity> iterator() {
        return entities.iterator();
    }

    ... etc
Run Code Online (Sandbox Code Playgroud)

这是子类.

public class HeroCollection extends EntityCollection {

    public void doSomeThing() { ... }
Run Code Online (Sandbox Code Playgroud)

我想做以下事情:

HeroCollection theParty = new HeroCollection();
theParty.add(heroA);
theParty.add(heroB);
for (Hero hero : theParty){
    hero.heroSpecificMethod();
}
Run Code Online (Sandbox Code Playgroud)

但是这在编译时失败了,因为迭代器是返回实体而不是英雄.我正在寻找一些限制列表的方法,使它只能包含子类的类型,这样我就可以在迭代器的结果上调用特定于子类的方法.我知道它必须以某种方式使用泛型,但我似乎无法弄清楚如何构造它.

java iterator

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

什么是@ -webkit-viewport?

我今天遇到了这个webkit CSS选择器@ -webkit-viewport并试图了解它的作用?似乎没有任何关于此的文件.我试过了

@-webkit-viewport {
    max-height: 100px;
    min-height: 100px;
}
Run Code Online (Sandbox Code Playgroud)

@media all {
    @-webkit-viewport {
        max-height: 100px;
        min-height: 100px;
    }
}
Run Code Online (Sandbox Code Playgroud)

但两者都不起作用.有人可以解释一下@ -webkit-viewport的作用以及使用它的一个例子.

html css webkit

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

arguments.slice() 应该在 ES5 中工作吗?

我正在Javascript 上观看Crockford - 第三幕:在大约 41 分 26 秒时发挥终极作用。他屏幕上的代码arguments.slice()以一种导致出错的方式使用。

function curry(func){
    var args = arguments.slice(1);
    ...
}
Run Code Online (Sandbox Code Playgroud)

他是这样解释的:

我将首先得到一个参数数组,除了第一个,因为第一个是一个函数,我不需要那个。在这种情况下,我假设我在 ES5 上,所以我没有做可怕的 Array.prototype.apply()把戏。

问题是运行会arguments.slice()导致此错误:

Uncaught TypeError: arguments.slice is not a function

我正在测试肯定有 ES5 的现代浏览器!我可以让代码工作的唯一方法是,如果我使用一些“可怕的”技巧,(如他所称),例如Array.prototype.slice.apply(arguments, [1])[].slice.call(arguments, 1);.

他只是误会了吗?他的幻灯片有错别字吗?为什么arguments.slice()在我的 ES5 浏览器中不起作用?

javascript function ecmascript-5 ecmascript-3

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

当switch语句中有两个连续的中断时会发生什么?

#include <stdio.h>
int main()
{
    int i = 0;
    char c = 'a';
    while (i < 2){
        i++;
        switch (c) {
        case 'a':
            printf("%c ", c);
            break;
            break;
        }
    }
    printf("after loop\n");
}
Run Code Online (Sandbox Code Playgroud)

上面代码的输出是什么?第二次休息是否意味着什么?

c debugging switch-statement

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

Javascript run()函数

var test = function(msg) {
  alert(msg)
};

(new test("hi")).run();
(new test("hello")).run();
Run Code Online (Sandbox Code Playgroud)

当我在javascript代码上运行时,我能够获得警报"嗨".但警告"你好"不会出现.

  1. 任何人都可以解释上面的内容,我对此完全陌生.只有我知道"测试"是一个功能
  2. 什么是run()方法呢?,因为当我在上面的代码中删除运行时,我能够看到两个警报,请帮助...

    var test = function(msg) {
      alert(msg)
    };
    
    (new test("hi"));
    (new test("hello"));
    
    Run Code Online (Sandbox Code Playgroud)

javascript

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