在另一个对象中使用Object方法而不在javascript中使用new关键字

时间:2014-12-04 18:57:49

标签: javascript

我有两个构造函数,我只想在对象a中使用对象b方法而不使用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包含两个方法。因此,在给定的示例中,我首先没有使用任何方法,但稍后可能需要。所以我不想创建new a()。我只想直接打电话

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

function a(){

  this.first=function(){
    return 'aaaaaa';
  }

  this.last= lastfunc;

}

function b(){
  this.name= lastFunct()
}

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

function lastFunct() {
  return 'bbbbb';
}

答案 2 :(得分:1)

有各种方法可以实现其功能。

  1. 创建名称空间
  2. var a={
      first:function(){
        return 'aaaaaa'
      },
      last:function (){
        return 'bbbbb'
      }
    }
    
    
    function b(){
      this.name= a.last()
    }
    
    1. 向原型属性添加方法
    2. var a=function(){
      };
      a.prototype.first=function(){
         return 'aaaaaa'
      };
      a.prototype.last=function (){
          return 'bbbbb'
      }
      function b(){
        this.name= a.prototype.last()
      }
      

      最后这将与前一个相同。

      1. 调用a()并直接调用其方法。(不带())
      2. 第三个是调用a(),它将创建“第一个”& “最后”方法将对其上下文起作用。然后调用您的方法。 但不推荐这种方式。 对于前。

        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}}
        

答案 3 :(得分:0)

在您创建first的实例之前,

lasta不存在。如果那些只是静态方法,为什么不使用对象?

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