如何在javaScript中使用原型在函数内创建函数

时间:2018-05-01 17:10:38

标签: javascript jquery

我只想创建函数内部函数,可以按以下格式访问(如jquery中的那个): mainFunction().childFunction(); 我认为这可以使用原型来实现,但我不知道该怎么做。谢谢。

2 个答案:

答案 0 :(得分:1)

mainFunction需要返回childFunction()的内容。点只是访问返回值的属性。例如:

function mainFunction() {
  console.log('mainCalled')
  return {
    childFunction() {
      console.log("childCalled")
      return this
    },
    someOtherFunction() {
      console.log("someother called")
      return this
    }
  }
}

mainFunction().childFunction()
mainFunction().someOtherFunction()
mainFunction().childFunction().someOtherFunction()

答案 1 :(得分:0)

可链式函数只需要知道它的定义上下文,以便可链接。我必须不同意批准的答案。如果你需要链接几个函数,并且每个函数必须返回一个带有多个方法的范围,这些方法也需要是可链接的,那么你最终会得到一段非常难以阅读的代码或一个所谓的意大利面条代码。

所以一个简单的解决方案是定义为可链接的所有函数共享定义范围,然后每个函数返回定义或范围的上下文。定义的上下文可以是任何内容,从window本身到对象甚至函数。

var context = this;

function foo() {
   // some code execution
   return context;
}

function bar() {
    // some code execution
    return context;
}

function baz() {
    // some code execution
    return context;
}

// chained together 
foo().bar().baz();

结果是一样的,但是使用这种方法,你最终会得到更干净,更易于维护的代码。

希望不同的观点也有帮助。