Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何避免在团队成员中重新键入相同的函数?_Javascript - Fatal编程技术网

Javascript 如何避免在团队成员中重新键入相同的函数?

Javascript 如何避免在团队成员中重新键入相同的函数?,javascript,Javascript,如何避免在团队成员中重新键入相同的函数?团队obj中的所有成员都可以使用say_name功能。如何编写我的代码 <script type="text/javascript"> var team={ // member jimmy:{ name:'jimmy', say_name:function (){} }, darcy:{ name:'darcy', say_name:function(){} }, // common fu

如何避免在团队成员中重新键入相同的函数?团队obj中的所有成员都可以使用
say_name
功能。如何编写我的代码

<script type="text/javascript">
var team={
  // member
  jimmy:{
    name:'jimmy',
    say_name:function (){}
  },
  darcy:{
    name:'darcy',
    say_name:function(){}
  },
  // common functions
  say_name: function(){
    // every member has the say_name function, I don't want to write the same code in each member. How to do?
    alert('my name is ??')
  }
}
</script>

var团队={
//成员
吉米:{
姓名:"吉米",,
说出_name:function(){}
},
达西:{
姓名:"达西",,
说出_name:function(){}
},
//共同功能
说出你的名字:函数(){
//每个成员都有say_name函数,我不想在每个成员中编写相同的代码。怎么办?
警报(“我的名字是??)
}
}
使用:


不过,可能有更直接的方法来实现这一点。

使用:


不过,可能有更简单的方法来实现这一点。

您可以使用prototype,首先定义一个construtcor函数:

function Team(){

}

Team.prototype.say_name=function(){
     // every team will have this method
}
组建一个团队:

var team=new Team();//now the team has a method called say_name
team.jimmy={name:'jimmy'}
更新:

这是一篇关于javascript公共模式的优秀文章,非常值得一读:)
您可以使用prototype,首先定义ConstructCor函数:

function Team(){

}

Team.prototype.say_name=function(){
     // every team will have this method
}
组建一个团队:

var team=new Team();//now the team has a method called say_name
team.jimmy={name:'jimmy'}
更新:

这是一篇关于javascript公共模式的优秀文章,非常值得一读:)

这个答案花了更长的时间。我认为您希望有多个团队实例和多个玩家实例,这些实例具有变量名等等。如果是这样的话,那么硬编码一个jimmy成员就不是好办法

// object defenition
function Team(){
  // property unuque for every team so teamB and teamC
  // would not have the same members
  this.members=[];
}
// properties shared by all team instances so teamB and teamC 
//   would refer to the same function
Team.prototype.addMember=function(name){
  this.members.push(new TeamMember(name));
}
Team.prototype.getMember=function(name){
  for(var i=0;i<this.members.length;i++){
    if(this.members[i].name===name){
      return this.members[i];
    }
  }
}


// Define a TeamMember, this is the definition, Bob would be
//   and instance o TeamMember; like var Bob=new TeamMember("Bob");
function TeamMember(name){
  this.name=name;
}
// properties shared by all TeamMember instance objects
//   so bill and jane will point to this function
TeamMember.prototype.sayName=function(){
  console.log("My name is:" + this.name);
}
// end of object definition

//creating instances
var teamB=new Team();
var teamC=new Team();
teamB.addMember("Tom");
teamB.addMember("Harry");
teamC.addMember("July");
teamC.addMember("Mary");
teamC.getMember("July").sayName();
//对象防御
职能小组(){
//每个团队的财产不合格,因此团队B和团队C
//不会有相同的成员
这一点。成员=[];
}
//所有团队实例共享的属性,因此teamB和teamC
//将引用相同的函数
Team.prototype.addMember=函数(名称){
this.members.push(新团队成员(名称));
}
Team.prototype.getMember=函数(名称){

对于(var i=0;i来说,制定这个答案需要更长的时间。我认为您希望有多个团队实例,其中多个参与者实例具有变量名等。如果是这种情况,那么硬编码jimmy成员就不是一种方法

// object defenition
function Team(){
  // property unuque for every team so teamB and teamC
  // would not have the same members
  this.members=[];
}
// properties shared by all team instances so teamB and teamC 
//   would refer to the same function
Team.prototype.addMember=function(name){
  this.members.push(new TeamMember(name));
}
Team.prototype.getMember=function(name){
  for(var i=0;i<this.members.length;i++){
    if(this.members[i].name===name){
      return this.members[i];
    }
  }
}


// Define a TeamMember, this is the definition, Bob would be
//   and instance o TeamMember; like var Bob=new TeamMember("Bob");
function TeamMember(name){
  this.name=name;
}
// properties shared by all TeamMember instance objects
//   so bill and jane will point to this function
TeamMember.prototype.sayName=function(){
  console.log("My name is:" + this.name);
}
// end of object definition

//creating instances
var teamB=new Team();
var teamC=new Team();
teamB.addMember("Tom");
teamB.addMember("Harry");
teamC.addMember("July");
teamC.addMember("Mary");
teamC.getMember("July").sayName();
//对象防御
职能小组(){
//每个团队的财产不合格,因此团队B和团队C
//不会有相同的成员
这一点。成员=[];
}
//所有团队实例共享的属性,因此teamB和teamC
//将引用相同的函数
Team.prototype.addMember=函数(名称){
this.members.push(新团队成员(名称));
}
Team.prototype.getMember=函数(名称){

对于(var i=0;iSome more on object cration using functions in JavaScript:Some more on object cration using functions in JavaScript:这是一篇关于JavaScript公共模式的伟大文章,非常值得一读:)这是一篇关于JavaScript公共模式的伟大文章,非常值得一读:)“可能有更直接的方法来实现它。”…比如不使用
bind
say_name:say_name
就足够了(
this
已经引用了函数所属的任何对象,在本例中,
jimmy
)。”但可能有更直接的方法来实现它。“…就像不使用
bind
;)
say_name:say_name
就足够了(
已经引用了函数的属性对象,在本例中,
jimmy
)。不客气,如果你要在JS中使用OO,请阅读并尝试理解与仓鼠对象的链接。不客气,如果你要在JS中使用OO,请阅读并尝试理解与仓鼠对象的链接。