Javascript 调用函数,即在函数中,在函数中

Javascript 调用函数,即在函数中,在函数中,javascript,Javascript,我有一个这样的脚本(JS) 如何在同一个函数“Quick”(在另一个this.x函数中)中调用.getById()。 从外面看,我会这样称呼它 var x = new Quick(); x.getById('someid'); 但是不要认为我应该在同一个函数中声明一个新的函数实例。 function Quick () { this.getById = function(id) { // use: = function(id) { return documen

我有一个这样的脚本(JS)

如何在同一个函数“Quick”(在另一个this.x函数中)中调用.getById()。

从外面看,我会这样称呼它

var x = new Quick();
x.getById('someid');
但是不要认为我应该在同一个函数中声明一个新的函数实例。

function Quick () {
   this.getById = function(id) {         // use:  = function(id) {
      return document.getElementById(id);       
   };
   this.doSomethingElse = function(id) { // pass the desired 'id' argument and 
      return this.getById(id).nodeName;  // Use the this reference
   };
}
如果您对链接能力感兴趣

您可以做的是:

function Quick () {

   var el; // internal variable

   this.getById = function(id) {
      el = document.getElementById(id);
      return this; // To keep your Methods chainable
   };
   this.getNodeName = function() {
      console.log( el.nodeName );
      return this; // To keep your Methods chainable
   };
}


var x = new Quick();
x.getById('test').getNodeName(); // "DIV"

模块模式将更适合您的需求

var Quick = {
    getById: function(id) {
    return document.getElementById(id);
    },
    doSomethingElse: function () {
    return Quick.getById('test').nodeName;
    }
}

除了没有使用有效的函数语法之外,您的代码很好。“this.getById”>“this.getById=function”。它几乎是ES6,所以你只是领先于你的时代…这是无效的javascript。您应该使用
this.getById=function(id){…}或在
Quick.prototype
@dandavis中定义
getById
。@dandavis是的,我不小心在问题中忘记了这一点,但在我的代码中它是有效的。这两者之间的主要区别在哪里?应该是这个。getById()而是关于静态/单例访问的。如果您只是共享了功能,那么就没有必要“新建”它。
function Quick () {

   var el; // internal variable

   this.getById = function(id) {
      el = document.getElementById(id);
      return this; // To keep your Methods chainable
   };
   this.getNodeName = function() {
      console.log( el.nodeName );
      return this; // To keep your Methods chainable
   };
}


var x = new Quick();
x.getById('test').getNodeName(); // "DIV"
var Quick = {
    getById: function(id) {
    return document.getElementById(id);
    },
    doSomethingElse: function () {
    return Quick.getById('test').nodeName;
    }
}