相关疑难解决方法(0)

没有使用jQuery的平滑滚动

我正在编写一个页面,我只想在没有任何插件或框架干扰的情况下使用UI的原始JavaScript代码.

而现在我正在努力寻找一种在没有jQuery的情况下顺利滚动页面的方法.

html javascript

74
推荐指数
8
解决办法
12万
查看次数

Javascript返回冒号

我正在学习JavaScript,并且遇到了以下结构:

var Test = (function () {

  function func1() {
      //do something.....
  }

  function func2() {
      //do something.....
  }

  function func3() {
      //do something.....
  }

  return {
      func1: func1,
      func2: func2,
      func3: func3
  };

})();
Run Code Online (Sandbox Code Playgroud)

我想知道返回块正在做什么.这是一个非常常用的JavaScript结构吗?请告诉我在哪里可以获得更多相关信息.

javascript return revealing-module-pattern

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

自我调用匿名函数

在JavaScript中,看到自调用函数并不罕见:

var i = (function(x) {
    return x;
})(42);

// i == 42
Run Code Online (Sandbox Code Playgroud)

虽然我当然没有比较这些语言,但我认为这样的构造可以翻译成C#,只要提供支持的语言版本:

var i = (delegate(int x) {
    return x;
})(42);
Run Code Online (Sandbox Code Playgroud)

要么:

var i = ((x) => {
    return x;
})(42);
Run Code Online (Sandbox Code Playgroud)

甚至:

var i = (x => x)(42);
Run Code Online (Sandbox Code Playgroud)

但是,每个版本都有错误:

预期的方法名称

自调用匿名方法是否不受支持(由于显式禁止或类型推断不可能),或者我的尝试中是否存在错误?

我冒昧地猜测,因为没有方法声明(Func<T,T>)可以推断出类型,它无法理清隐含的类型,我打算通过名称调用声明的方法,并且真正搞砸了语法.


勘误表

在此问题充斥之前:

var i = new Func<int, int>(x => x)(42);
Run Code Online (Sandbox Code Playgroud)

我应该说我希望利用类型推断,但我认为由于过于隐蔽而可能无​​法实现.

所以,澄清一下这个问题; 我们知道我们可以var i = new Func<int, int>(x => x)(42);但是如果没有创建实例,或者转换为Func,这可能吗?

用例

对于那些好奇(或有关)的用例是这样的:

var o …
Run Code Online (Sandbox Code Playgroud)

c# anonymous-methods anonymous-function self-invoking-function

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

ES6的惯用揭示模块模式

在过去,我使用了揭示模块模式.

function myModule() {
  function foo() ...
  function bar() ...

  return { 
    foo: foo, 
    bar: bar
  };
}
Run Code Online (Sandbox Code Playgroud)

使用ES6,这可以通过对象速记得到改进.

function myModule() {
  function foo() ...
  function bar() ...

  return { foo, bar };
}
Run Code Online (Sandbox Code Playgroud)

现在有了内置的模块语法,我很难找到与上面最相似的首选模式.

选项#1命名为exports

// export file
function foo() ...
function bar() ...

export { foo, bar };

// import file
import { foo, bar } from './export-file';

foo();
bar();
Run Code Online (Sandbox Code Playgroud)

选项#2默认导出/导入与解构

// export file
function foo() ...
function bar() ...

export default { foo, bar }; …
Run Code Online (Sandbox Code Playgroud)

javascript es6-modules

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

什么是"如果需要补丁,则不能覆盖公共功能".在Addy的Revealing Module Pattern描述中?

这种模式的缺点是,如果私有函数引用公共函数,则如果需要补丁,则不能覆盖该公共函数.这是因为私有函数将继续引用私有实现,并且该模式不适用于公共成员,仅适用于函数.

有没有人举例说明他的意思?

链接到上面引用的Revealing Module Pattern

javascript revealing-module-pattern

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

从AngularJS工厂返回功能

我试图了解这个AngularJS工厂方法的返回部分的目的是什么意思?

return {
    getMessages: getMessages
  };
Run Code Online (Sandbox Code Playgroud)

如果我们向这个名为getAnotherMessage()的工厂添加了一个新方法会发生什么,我们是否需要更新这个返回段?

myModule.factory('HelloWorld', function($q, $timeout) {

  var getMessages = function() {
    var deferred = $q.defer();

    $timeout(function() {
      deferred.resolve(['Hello', 'world!']);
    }, 2000);

    return deferred.promise;
  };

  return {
    getMessages: getMessages
  };

});
Run Code Online (Sandbox Code Playgroud)

javascript angularjs

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

使用模块模式和实例化新对象之间的区别

我正在尝试重构一些javascript,我对模块模式感到困惑.

我现在的一种方法是简单地声明一个包含所有组件功能的类

var Foo = function(){
    this.Bar = {};
    ...
}
Run Code Online (Sandbox Code Playgroud)

并创建一个在组件中使用的新实例.但我也读过有关模块模式的内容,我看不出与我所拥有的相比有什么好处,因为它似乎只是以更复杂的方式做同样的事情.也许我只是没有遇到过使它成为更好选择的情况.例如,这样的模式:

var module = (function () {
    // private variables and functions
    var foo = 'bar';

    // constructor
    var module = function () {
    };

    // prototype
    module.prototype = {
        constructor: module,
        something: function () {
        }
    };

    // return module
    return module;
})();

var my_module = new module();
Run Code Online (Sandbox Code Playgroud)

与我已经拥有的东西没有明显不同.这种模式让我做了什么,我不能做其他方式?

javascript module-pattern

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

具有默认功能和其他功能的 Javascript 对象

我正在尝试为某些东西创建自己的插件,但是在第一步时遇到了问题。我想要一个可以将参数作为默认值并在其中包含其他功能的对象。请查看下面的示例,了解我正在尝试完成的工作。

var a = function(str) { console.info(str); }
a = {
    Test: function() { console.info(TestMessage()); },
    TestMessage: function() { return "Test Message"; }
}
Run Code Online (Sandbox Code Playgroud)

基本上,我想要我可以使用参数自行调用的父对象。一个测试”); 同时,我希望该父对象中的其他函数也可以访问该对象中的其他函数。a.Test() -> 调用 a.TestMessage(),但是,不必写“a”。每次在该对象内部时。

javascript

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

TypeScript是不是为类使用了揭示模块模式?

TypeScript是不是为类使用了揭示模块模式?我期望这段代码有不同的结果.

class Test {

    private privateProperty: any;

    public publicProperty: any;     
}
Run Code Online (Sandbox Code Playgroud)

生成这个:

var Test = (function () {
    function Test() { }
    return Test;
})();
Run Code Online (Sandbox Code Playgroud)

我期待这样的事情:

var test = (function(){
    var privateProperty;
    var publicProperty;

    return {
        publicProperty: publicProperty;
    };

})();
Run Code Online (Sandbox Code Playgroud)

typescript

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

Javascript 将 main.js 分成两个文件(导入?需要?)

我的超长文件(main.js)按原样工作正常。但我想将处理“y”的函数分成一个单独的文件进行组织。在 PHP 中,我将使用 require('yfunctions.php') 并完成它。

javascript 中是否有不需要重写函数调用的等效项?

main.js:

// do stuff

function first(x){
  // do stuff with x
}

function second(y){
  // do stuff to y
  // return y
}

function third(y){
  // do stuff with y
}
Run Code Online (Sandbox Code Playgroud)

最终变成:

main.js:

require('yfunctions.js');
// do stuff

function first(x){
  // do stuff with x
}
Run Code Online (Sandbox Code Playgroud)

yfunctions.js:

function second(y){
  // do stuff to y
  // return y
}

function third(y){
  // do stuff with y
}
Run Code Online (Sandbox Code Playgroud)

上面的方法不起作用(看起来)。我是否必须向 yfunctions.js 中的每个函数添加“导出”声明?有没有办法说“将此文件中的每个函数导出为函数?”

(注意,我正在使用 Node.js / Electron ...但我很好奇有关 …

javascript node.js

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