相关疑难解决方法(0)

动态Getter和Setter - 为什么这不起作用?

我正在尝试创建一个动态构建自己的getter和setter的对象:

function Person( properties ) { // 'properties' is an object literal

    this._private = properties; // private by convention

    for ( key in this._private ) {

        this[key] = function() {

            return this._private[key];
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望,这会产生这样的东西:

var jack = new Person({

    working:true,
    age:33,
    gender:'male'
});

jack.working() --> true
jack.age() --> 33
jack.gender() --> 'male'
Run Code Online (Sandbox Code Playgroud)

问题是,它总是返回'男性',如下所示:

jack.working() --> 'male'
jack.age() --> 'male'
jack.gender() --> 'male'
Run Code Online (Sandbox Code Playgroud)

我错过了什么?哦,这只是一个概念证明.我知道这不是用JavaScript创建getter和setter的完美解决方案.

javascript dynamic getter-setter

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

无法删除动态添加的脚本

我正在附加一个引用 at javascript 和样式表的子元素,但是当不再使用它时,我想再次删除它。

        var head = document.getElementsByTagName('head')[0];

        // We create the style
        var style = document.createElement('link');
        style.setAttribute("rel", "stylesheet");
        style.setAttribute("type", "text/css");
        style.setAttribute("href", '_css/style.'+app+'.css');

        var script = document.createElement('script');
        script.setAttribute("type", "text/javascript");
        script.setAttribute("src", '_scripts/_js/script.'+app+'.js');

        // And the append the style
        head.appendChild(style);
        head.appendChild(script);
Run Code Online (Sandbox Code Playgroud)

这就是我附加脚本的方式,它完美地工作..但我无法弄清楚如何从 HTML 中的 head 标签中再次删除标签。

有没有人知道如何再次从标题标签中删除标签..我一直在 Stackoverflow 周围搜索,但实际上似乎没有人有这种问题,但如果有人知道还有另一个问题可以回答这个问题,请告诉我..

javascript append removechild

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

Node + Express:req和res变量如何具有全局范围而不会导致冲突?

似乎reqres变量在Express中具有全局范围(例如,无论函数范围如何,这些变量都是可访问的).如何在不引起同时客户端冲突的情况下实现这一目标?

global-variables node.js express

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

无法从书中了解这些例子javascript,好的部分

我正在阅读javascript:Douglas Crockford的优点.我很难理解一个特定的例子和作者提供的解释.

例1 :(第38页)

var quo=function (status) {
    return {
        get_status:function() {
           return status;
       }
    };
};

var myQuo=quo("amazed");
document.writeln(myQuo.get_status());
Run Code Online (Sandbox Code Playgroud)

书中的解释(我不明白这一点.请解释这一部分):

这个quo函数被设计为在没有前缀的情况下使用,因此名称不是大写的.当我们调用quo时,它返回一个包含get_status方法的新对象.对该对象的引用存储在myQuo中.即使quo已经返回,get_status方法仍然具有对quo的status属性的特权访问权限.get_status无权访问参数的副本.它可以访问参数本身.这是可能的,因为该函数可以访问创建它的上下文.这叫做封闭.

例2(第39页):

//make a function that assigns event handler function to array of nodes
//when you click on a node, an alert box will display the ordinal of the node

var add_the_handlers=function (nodes) {
    var helper=function(i) {
        return function(e) {
            alert(i);
        }
    };
    var i;
    for (i=0;i<nodes.length;i++) {
        nodes[i].onclick=helper(i);
    }
};
Run Code Online (Sandbox Code Playgroud)

我很难理解这段代码是如何工作的,而且函数(e)是做什么的?为什么辅助函数返回函数反过来又不返回任何东西.这让我非常困惑.如果有人能用简单的语言解释,那将会非常有帮助.非常感谢

EDIT:
According to …
Run Code Online (Sandbox Code Playgroud)

javascript function object

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

Javascript闭包和递归

我一直在更具体地阅读编程闭包概念,尤其是与Javascript有关的概念.我还没有完全理解它与我多年来一直在写的Javascript代码有什么不同.我也理解递归的概念,但我想知道,闭包和递归是如何相似的?我是否正确理解递归本身就是一种闭包?

关闭:

function init() {
    var name = "Stack Overflow";
    function displayName() {
        alert(name);
    }
    displayName();
}
init();
Run Code Online (Sandbox Code Playgroud)

递归:

function factorial(num) {
    if(num < 0)
        return -1;

    else if(num == 0)
        return 1;

    else
        return (num * factorial(num - 1));
}

alert(factorial(8));
Run Code Online (Sandbox Code Playgroud)

我想我已经开始明白闭包只不过是在函数中有一个函数,内部函数可以通过作用域访问外部函数.可能会有递归闭包吗?我的意思是,虽然我的递归示例也不是关闭的例子,但它至少会发生吗?我试图理解递归和闭包是如何相似,不同,或者它们是否可以被所有人比较.有没有例子可以描述这个?

javascript recursion closures

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

如何使用setInterval()重复调用带有参数的函数?

我的函数运行正常但我希望它重复运行:

$('button').click( function(){

    setInterval(magicWords(7,3), 1000); 

});
Run Code Online (Sandbox Code Playgroud)

我尝试在函数本身中硬连接参数并运行参数 -但是它仍然是一个不行......?

javascript jquery function setinterval

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

循环JS变量不会在函数内显示正确的值

我需要做以下任务.但是这总是仅警告"5"而不是1,2,3,4和5.我该如何解决这个问题?请帮忙.

    for(var x=1; x<=5; x++){
        something.load(function(result){
            alert(x);
        });
    }
Run Code Online (Sandbox Code Playgroud)

javascript jquery jquery-mobile cordova

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

在函数中为变量赋值变量

我正在尝试在函数中为自己分配一个变量,如果变量与函数的参数同名,它似乎不起作用,但如果它们不是同一个名称.代码示例更清楚地显示了这一点.

我应该期待这种行为吗?这是我的d3用例的一个简化示例,它提示了这个问题.我也在下面展示过.

非工作的例子

var a;

function assign(a) {
    a = a;
}
assign("test")
console.log(a)
Run Code Online (Sandbox Code Playgroud)

未定义

工作实例

var a;

function assign(b) {
    a = b;
}
assign("test")
console.log(a)
Run Code Online (Sandbox Code Playgroud)

测试

用例

var data
d3.csv("data.csv", function(error, data) {
    //Doesn't work for me
    data = data
}
console.log(data)
Run Code Online (Sandbox Code Playgroud)

未定义

javascript closures scope shadow hoisting

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

JavaScript中的执行上下文和对象

有一些关于JS中的对象,执行上下文,我不明白.

当我们创建一个对象时,它是否创建了一个执行上下文?因为在调用函数时会创建执行上下文.如果没有,那么对象就像实际执行上下文中的其他变量一样?

谢谢.

javascript object executioncontext

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

为什么不在关闭中重置变量(Javascript)

我一直在努力学习关闭,但有一件事仍困扰着我.如果我有以下代码:

var add = (function () {
    var counter = 0;
    return function () {return counter += 1;}
})();

add();
add();
add();

// Returns "3"
Run Code Online (Sandbox Code Playgroud)

如果我调用add()三次,为什么不每次都将counter设置为零,然后返回一个递增计数器的匿名函数?一旦自动调用函数运行,它是否会跳过它?对不起,如果问题看起来很简单,我很难理解它.任何帮助将不胜感激.

javascript closures scope self-invoking-function

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