小编cor*_*zza的帖子

如何在使用原型时引用父对象?

我已经创建了一个实用程序函数,我在几乎所有我编写的Javascript代码中都包含它.所述函数的目的是简单地从数组中删除一个元素.它接受一个数组和一个索引作为参数,并返回删除了所需元素的数组.

这是功能:

sliceHere = function(array, i)
{
    buffOne = array.slice(0, i);
    buffTwo = array.slice(i + 1);

    return buffOne.concat(buffTwo);         
}
Run Code Online (Sandbox Code Playgroud)

它工作得很好.如果我有一个阵列a = ["a", "b", "c"],我想从中移除"a"它,我只是这样做a = sliceHere(a, 0);.

虽然这确实有用,但我想用更"优雅"的东西取而代之.我想要做的是使函数sliceHere成为我拥有的所有数组的方法.所以我可以简单地做到a.sliceHere(0)并达到同样的效果.这只是一种更好的做事方式,如果我错了就纠正我.

我做的是这样的:

sliceHere = function(i)
{
    buffOne = this.slice(0, i);
    buffTwo = this.slice(i + 1);

    this = buffOne.concat(buffTwo);         
}

Array.prototype.sliceHere = sliceHere
Run Code Online (Sandbox Code Playgroud)

这似乎根本不起作用.因为我知道"这个"可能不是真正的数组.如何从方法内部引用数组?

javascript arrays oop prototype function

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

将包含在对象内的参数赋予函数是个坏主意吗?

通常,随着我的代码库的增长,函数会收到越来越多的参数,并且维护变得有点草率,所以我通常只是默认为这样:

f = function(args){return args.v + 1;}

f({"v":2});
Run Code Online (Sandbox Code Playgroud)

看起来更干净,但可以吗?为什么不是每个人都这样做?

javascript performance arguments function

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

如何跨会话保存当前的Vim结构配置?

"结构配置"是指当前打开的缓冲区,选项卡,窗口及其位置.

通过'跨会话'意味着我希望能够键入:save,将其保存到~/.vimsconf,并且键入:load实际上加载这些缓冲区并设置之前的窗口和选项卡,例如.

是否可能内置功能?或者也许是一个插件?

我正在使用openSUSE 12.3

vim plugins text-editor

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

在定义函数之前调用函数(前向引用扩展到变量的定义)

考虑这个基本的Scala示例代码:

object Test {
    def main(args: Array[String]) {
        inner()

        var x: Int = 5

        def inner() {
            println("x: " + x)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

尝试编译它会产生以下错误消息:

test.scala:3: error: forward reference extends over definition of variable x
        inner()
        ^
one error found
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 在这种情况下什么是前向引用,它对"扩展变量x的定义"意味着什么?
  2. 为什么前面的代码会引发这个编译时错误?
  3. 这个错误是怎么来的?好像编译器必须实现一些类似解释器的功能并遵循函数调用!

这个问题并不是关于定义的顺序,而是确切地调用函数的时候.在定义函数之前调用函数是完全合法的 - 但如果在调用和函数定义之间放置一个变量,并且函数使用此变量,它就会突然变为非法.

我想解释这个语言功能!为什么会这样?它是如何工作的?是否还有其他更复杂的例子 - 即它只是某些其他功能的一部分还是某些规则的结果?

我想象编译器目前在做什么:

  1. 检查函数是否是可以访问当前作用域变量的闭包,
  2. 检查它是否确实访问当前范围中的变量,并且
  3. 对于闭包访问的每个变量,检查变量是否在调用之前定义

我基本上回答了我的第三个问题吗?这是这种行为的工作原理吗?它似乎使编译器复杂化(特别是如果我们考虑具有多级函数的情况).

如果是这种情况,它如何融入语言的正式定义,即语法?在我看来,我写的程序在语法上是正确的.

compiler-construction variables scope scala function

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

functionName(function(){...})在JavaScript中做了什么?

addHorizonLoadEvent(function() {...})以下代码段的含义是什么?

addHorizonLoadEvent(function() {
    show_hide_datepickers();
});
Run Code Online (Sandbox Code Playgroud)

javascript

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

在制作多人游戏时,我是否依赖浏览器不向玩家提供变量(所以他可以破解)?

例如,我有一个实例播放器.我知道我不能输入:"player.health = 99999"到JavaScript,浏览器只是不让我,但如果有人制作了一个让你这样做的浏览器怎么办?或者默认情况下是否无法更改此类变量?

javascript browser console node.js socket.io

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

Facebook赞按钮没有出现在我的页面上,我做错了什么?

我正在建立一个网站,我希望能够使用Facebook"喜欢"它.我已经浏览了他们的SDK,看起来很简单......

我已经"制造"了这个:

<html>
    <head>
    </head>

    <body>
        <h1>Testing the Facebook like button</h1>
        <div id="fb-root"></div>

        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) return;
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1&appId=177127339057410";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, 'script', 'facebook-jssdk'));</script>

        <div class="fb-like" data-href="http://yannbane.blogspot.com/" data-send="false" data-width="450" data-show-faces="true"></div>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我在计算机上将其保存为"index.html".现在,当我尝试打开它时,它只显示"测试Facebook就像按钮"标题并继续加载,并没有真正发生.怎么会?我当然不是想"喜欢"index.html,而是我的博客(http://yannbane.blogspot.com/),所以我认为在本地打开它应该没有问题...

html javascript facebook

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

如何使"this"不是指一个事件被调用的元素?

我知道Javascript中没有类,为方便起见,我将构造函数称为类.

我正在InputHandler用Javascript 调用一个类.它有一个名为的方法onMouseDown,它将它注册为一个事件处理程序,如下所示:

Irenic.InputHandler.prototype.attach = function()
{
    var inputHandler = this; //Get the instance of InputHandler

    document.addEventListener("keydown", inputHandler.onKeyDown, false); //Concentrate on this, but the question applies to all of these.
    document.addEventListener("keyup", inputHandler.onKeyUp, false);
    document.addEventListener("mousemove", inputHandler.onMouseMove, false);
    document.addEventListener("mouseup", inputHandler.onMouseUp, false);
    document.addEventListener("mousedown", inputHandler.onMouseDown, false);
}
Run Code Online (Sandbox Code Playgroud)

(Irenic是我正在构建的引擎的名称,它也是一个包含所有这些类的全局对象.)

inputHandler.onMouseDown方法如下所示:

Irenic.InputHandler.prototype.onMouseDown = function(event){var inputHandler = this; //遗憾地,这是指文档,而不是InputHandler的实例

console.log(inputHandler); //Logs #document

if (event.button == 0)
{
    inputHandler.mouse.lmb = true;
}

if (event.button == 1)
{
    inputHandler.mouse.wheel = true; …
Run Code Online (Sandbox Code Playgroud)

javascript events this

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

在C++中引用是否是单独的类型?如果没有,为什么他们写的类型?

据我所知,可以在原始类型可以使用的地方使用引用(我并不暗示反向是真的),唯一的区别是它们的变异语义(当变量用作左值时).

那么他们不会像原版那样符合资格吗?如果是这样,为什么某些东西是一个参考,存储在它的类型中?

编辑:如果引用是不同的类型,为什么它们可以在很多情况下替换原始类型,而无需显式转换?是否涉及隐式演员?

例:

void bar(int& a);

int x;
int& y = x;

bar(y) // matching type
bar(x) // what happened here? was x cast to a reference?
Run Code Online (Sandbox Code Playgroud)

c++ types reference language-lawyer

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