为每个调用返回相同实例的返回匿名函数

时间:2018-05-28 19:56:59

标签: javascript typescript

以下函数为每次调用返回一个新的匿名函数。

public example() {
    return (): string => {
        return 'hello world';
    };
}

let a = example();
let b = example();

console.log(a === b);

以上将打印false

是否可以重新使用相同的匿名函数,而不必将其指定为this的属性。这样功能就被隔离了。

2 个答案:

答案 0 :(得分:3)

使用IIFE可以使example成为关闭要返回的函数的函数:



let example = (() => {
    let _priv = () => "hello world";
    return function(){ return _priv; };
  })();
  
let a = example();
let b = example();

console.log(a === b);




这是私有变量的方法之一(如果不是方法),之前有类似于使用打字稿的静态检查和private的替代方法。

答案 1 :(得分:0)

import * as deepEqual from "deep-equal";

尝试使用:console.log(deepEqual(a, b);