在javascript构造函数中将属性设置为函数
我正在使用一段将name属性设置为函数的代码在javascript构造函数中将属性设置为函数,javascript,oop,constructor,Javascript,Oop,Constructor,我正在使用一段将name属性设置为函数的代码 name = n; this.name = function(n){ if( n ) name=n; return name; } 完整构造函数是: function Warrior(n){ name = n; this.name = function(n){ if( n ) name=n; return name; } } 我不明白这和这有什么不同;为什么我不能在像这样的toStrin
name = n;
this.name = function(n){
if( n ) name=n;
return name;
}
完整构造函数是:
function Warrior(n){
name = n;
this.name = function(n){
if( n ) name=n;
return name;
}
}
我不明白这和这有什么不同;为什么我不能在像这样的toString函数中使用它
Person.prototype.toString = function(){
return "Hi! my name's "+this.name;
}
这里的构造函数是
Warrior
,您可以将新方法toString
添加到现有原型Warrior
。像这样你可以添加
Warrior.prototype.toString = function(){ // code goes here }
this.name
是一个函数,所以
使用
new
关键字从同一原型创建新对象
Warrior.prototype.toString = function(){
return "Hi! my name's "+this.name();
}
myname = new Warrior("ur name");
console(myname.toString());
您创建的是
name
的getter/setter:
职能人员(名字、姓氏){
this.firstname=firstname;
this.lastname=lastname;
}
Person.prototype.fullname=函数(fullname){
if(arguments.length<1)返回this.firstname+“”+this.lastname;
var newname=fullname.split(“”);
this.firstname=newname[0];
this.lastname=newname[1];
返回全名;
};
var person=新的人员(“Aadit”、“Shah”);
警报(人名);
警报(person.lastname);
警报(person.fullname());
个人全名(“Chuck Norris”);
警报(人名);
警报(person.lastname);
警报(person.fullname())代码>可能重复的
Warrior.prototype.toString = function(){
return "Hi! my name's "+this.name();
}
myname = new Warrior("ur name");
console(myname.toString());