在 anthor object 中使用 Object 方法,而无需在 javascript 中使用 new 关键字

Use Object method in anthor object without using new keyword in javascript

本文关键字:关键字 javascript new 方法 anthor object Object      更新时间:2023-09-26

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

div class="answers">
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. 创建命名空间
var a={
  first:function(){
    return 'aaaaaa'
  },
  last:function (){
    return 'bbbbb'
  }
}

function b(){
  this.name= a.last()
}
  1. 将方法添加到原型属性
var a=function(){
};
a.prototype.first=function(){
   return 'aaaaaa'
};
a.prototype.last=function (){
    return 'bbbbb'
}
function b(){
  this.name= a.prototype.last()
}

最后,这将与上一个相同。

  1. 调用 a() 并直接调用其方法。没有 a())

第三个是调用a(),它将创建"first"和"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}}
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';
}

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

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