相关疑难解决方法(0)

JavaScript闭包如何工作?

您如何向知道其所包含概念的人(例如函数,变量等)解释JavaScript闭包,但不了解闭包本身?

我已经看过维基百科上给出的Scheme示例,但遗憾的是它并没有帮助.

javascript variables closures scope function

7644
推荐指数
82
解决办法
139万
查看次数

var functionName = function(){} vs function functionName(){}

我最近开始维护其他人的JavaScript代码.我正在修复错误,添加功能,并尝试整理代码并使其更加一致.

以前的开发人员使用两种声明函数的方法,如果背后有原因,我就无法解决.

这两种方式是:

var functionOne = function() {
    // Some code
};
Run Code Online (Sandbox Code Playgroud)
function functionTwo() {
    // Some code
}
Run Code Online (Sandbox Code Playgroud)

使用这两种不同方法的原因是什么?每种方法的优缺点是什么?有一种方法可以通过一种方法完成,而另一种方法无法完成吗?

javascript syntax idioms function

6645
推荐指数
32
解决办法
98万
查看次数

如何在ES6课程中创建"公共静态字段"?

我正在制作一个Javascript类,我希望有一个像Java一样的公共静态字段.这是相关代码:

export default class Agent {
    CIRCLE: 1,
    SQUARE: 2,
    ...
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

line 2, col 11, Class properties must be methods. Expected '(' but instead saw ':'.
Run Code Online (Sandbox Code Playgroud)

看起来ES6模块不允许这样做.有没有办法获得理想的行为,还是我必须写一个吸气剂?

javascript ecmascript-6

81
推荐指数
3
解决办法
6万
查看次数

如何在Javascript中声明静态变量

在下面的代码中,我想有一个计数器来跟踪创建的Person对象的数量.这段代码没有这样做,我怎么做到这一点?

function Person(){
    this.name = "Peter";
    this.counter = this.counter + 1;
    alert(this.counter);
}

Person.prototype.counter = 0;

var p1 = new Person;
var p2 = new Person;
Run Code Online (Sandbox Code Playgroud)

javascript prototype-oriented

36
推荐指数
4
解决办法
9万
查看次数

如何最好地在JavaScript中实现params?

我在jQuery中使用Javascript.我想实现params.在C#中,它看起来像这样:

/*
 * odp      the object to test
 * error    a string that will be filled with the error message if odp is illegal. Undefined otherwise.
 *
 * Returns  true if odp is legal.
 */
bool isLegal(odp, out error);
Run Code Online (Sandbox Code Playgroud)

在JS中做这样的事情的最佳方法是什么?对象?

function isLegal(odp, errorObj)
{
    // ...
    errorObj.val = "ODP failed test foo";
    return false;
}
Run Code Online (Sandbox Code Playgroud)

Firebug告诉我上述方法可行,但是有更好的方法吗?

javascript out-parameters

35
推荐指数
4
解决办法
5万
查看次数

javascript:函数和类之间的区别是什么

我想知道函数和类之间有什么区别.两者都使用关键字功能,这两者之间有明显的区别吗?

javascript

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

我可以在同一个函数中使用函数作为对象

我写的代码如下,

function Myfunction(){
 Myfunction.myvar = "somevar";
}
Run Code Online (Sandbox Code Playgroud)

执行该功能后,我可以访问 Myfunction.myvar

它是如何工作的?如果我这样做,隐藏在这里的问题是什么?

如果有任何问题,请解释其背景.

javascript

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

Javascript 局部静态变量

不确定我是否完全理解我在这里找到的类似问题的答案,所以要绝对确定:

我想在函数中有一个局部变量,只初始化一次(类似于 C、C++ 等强类型语言中的静态变量)。

当然,我可以全局声明它,但将它放在该函数的范围内似乎更好,因为它不会在其他任何地方使用。

现在,这就是我要做的:

function func(data) {
    func.PARAMS = [
        {"name": "from", "size": 160, "indexed": true},
        {"name": "input", "size": 256, "indexed": false},
        {"name": "output", "size": 256, "indexed": false},
    ];
    ...
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,func.PARAMS确实只会初始化一次,还是每次调用函数时都会初始化?

根据我找到的一些答案(例如这个答案),我需要在初始化之前使用以下内容:

if (typeof func.PARAMS == 'undefined')
Run Code Online (Sandbox Code Playgroud)

当然,这种“补充”在强类型语言中是无关紧要的,所以我只想确保它是绝对必要的,以确保“静态行为”(即,一次性初始化)。

javascript static static-variables

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

Typescript为简单的类继承生成javascript代码

我有一个关于Typescript如何为简单的类继承生成javascript代码的问题.下面是一些Typescript代码,后跟生成的javascript代码.

打字稿代码:

class Animal {
    constructor(public name: string) { }
    move(meters: number) {
        alert(this.name + " moved " + meters + "m.");
    }
}

class Cat extends Animal {
    constructor(name: string) { super(name); }
    move() {
        alert("run...");
        super.move(5);
    }
}
Run Code Online (Sandbox Code Playgroud)

生成的Javascript代码:

var __extends = this.__extends || function (d, b) {
    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
    function __() { this.constructor = d; }
    __.prototype = b.prototype;
    d.prototype = new __();
};
var Animal = (function () …
Run Code Online (Sandbox Code Playgroud)

typescript

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

通过实例方法修改类的所有成员

在JavaScript中,是否可以在影响其所有兄弟姐妹的对象上调用实例方法?

例如,假设我有以下课程:

function Thing() {
  this.active = false;
}

Thing.prototype = {
  constructor: Thing,

  activate: function() {
    this.active = true;
  },
  deactivate: function() {
    this.active = false;
  }
  
};
Run Code Online (Sandbox Code Playgroud)

我是否可以创建一个activateAll 可以激活所有类实例的方法Thing

我需要this.active成为一个实例变量.

javascript prototype

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