在anthor对象中使用Object方法,而不在javascript中使用new关键字

在anthor对象中使用Object方法,而不在javascript中使用new关键字,javascript,Javascript,我有两个构造函数,我只想在objectb中使用objecta方法,而不使用new关键字,因为我不想在不需要时创建一个具有所有属性的对象。例如,在构造函数b中,我想使用构造函数b方法 function a(){ this.first=function(){ return 'aaaaaa' } this.last=function (){ return 'bbbbb' } } function b(){ this.name= //call method last

我有两个构造函数,我只想在object
b
中使用object
a
方法,而不使用
new
关键字,因为我不想在不需要时创建一个具有所有属性的对象。例如,在构造函数
b
中,我想使用构造函数b方法

function a(){
  this.first=function(){
    return 'aaaaaa'
  }
  this.last=function (){
    return 'bbbbb'
  }
}

function b(){
  this.name= //call method last of constructor a.
}    

var person= new b();
console.log(person.name) //bbbbb

注意:构造函数a包含两个方法。所以在给定的示例中,我并没有先使用任何方法,但以后可能需要。所以我不想创建
新的a()
。我只想直接调用它

first
last
直到您创建
的一个实例
。如果这些只是静态方法,为什么不使用对象呢

var a = {
  first: function(){
    return 'aaaaaa'
  },
  last: function (){
    return 'bbbbb'
  }
};

first
last
在创建
a
的实例之前不存在。如果这些只是静态方法,为什么不使用对象呢

var a = {
  first: function(){
    return 'aaaaaa'
  },
  last: function (){
    return 'bbbbb'
  }
};

有多种方法可以实现其功能

  • 创建名称空间
  • 向原型属性添加方法
  • 最后,这将与前一个相同

  • 调用a()并直接调用其方法。(不使用a())
  • 第三个是调用a(),它将创建“first”和“last”方法,这些方法将作为其上下文的函数。然后调用您的方法但不建议使用这种方式。 例如


    有多种方法可以实现其功能

  • 创建名称空间
  • 向原型属性添加方法
  • 最后,这将与前一个相同

  • 调用a()并直接调用其方法。(不使用a())
  • 第三个是调用a(),它将创建“first”和“last”方法,这些方法将作为其上下文的函数。然后调用您的方法但不建议使用这种方式。 例如



    你不能那样做。把方法移到原型上,你不能这样做。将方法移到原型中。我知道您正在尽可能接近地复制OP answer,但最好将这些函数添加到构造函数原型中。e、 g.b.prototype.name=function…,a.prototype.last=lastfunc,a.prototype.first=function…@Patrick我同意,但我会保持原样,因为这个解决方案还有另一个答案。它仍然有效。我在另一个答案之前提供了评论:)我知道您正在尽可能接近地复制OP-answer,但最好将这些函数添加到构造函数原型中。e、 g.b.prototype.name=function…,a.prototype.last=lastfunc,a.prototype.first=function…@Patrick我同意,但我会保持原样,因为这个解决方案还有另一个答案。它仍然有效。我在另一个回答之前发表了评论:)你的工作很好。为了了解直接在构造函数中指定方法和使用prototypeWell添加方法之间的区别,这里有一个很好的详细答案:您的工作正常。为了了解直接在构造函数中指定方法和使用prototypeWell添加方法之间的区别,这里有一个很好的详细答案:您的第一个示例不起作用。当我移除这个。那么它工作得很好。我只想知道你说的“调用a()并直接调用其方法(不使用a())”的第三点,你能举个例子吗that@amit,我对答案进行了更改,请参考。抱歉,命名空间中不需要此选项。对不起,我的打字错误。你的第一个例子不起作用。当我移除这个。那么它工作得很好。我只想知道你说的“调用a()并直接调用其方法(不使用a())”的第三点,你能举个例子吗that@amit,我对答案进行了更改,请参考。抱歉,命名空间中不需要此选项。对不起,我的打字错误
    function a(){
    
    }
    
    a.prototype.last=function(){
        return 'bbbb'
    }
    
    function b(){
        this.name= a.prototype.last()//call method last of constructor a.
    }    
    
    var person= new b();
    console.log(person.name) //bbbbb
    
    var a={
      first:function(){
        return 'aaaaaa'
      },
      last:function (){
        return 'bbbbb'
      }
    }
    
    
    function b(){
      this.name= a.last()
    }
    
    var a=function(){
    };
    a.prototype.first=function(){
       return 'aaaaaa'
    };
    a.prototype.last=function (){
        return 'bbbbb'
    }
    function b(){
      this.name= a.prototype.last()
    }
    
    function a(){
        this.first=function(){
            return 'aaaaaa'
        }
        this.last=function (){
            return 'bbbbb'
       }
    }
    a()
    function b(){   this.name= last()}    
    
    var person= new b(); console.log(person.name) //bbbbb}}