我已经创建了自定义对象,我想要添加一个方法。我想大写我的价值观。但它给了我[对象对象]。任何想法如何完成它。 fiddle
function checkObj (name,title,salary){
this.name= name;
this.title= title;
this.salary= salary;
}
var woo=new checkObj("rajora","this is a test",2000);
checkObj.prototype.inc=function (){
for(i=0;i<this.length;i++){
this[i]= this[i].toUpperCase();
}
};
woo.inc();
console.log(woo)
答案 0 :(得分:1)
当您致电console.log()
并向其传递woo
这样的对象时,它会使用woo.toString()
获取字符串表示并打印它。
woo
从toString()
继承Object.prototype
,默认情况下会打印您获得的字符串,即[object object]
。
你必须像这样覆盖toString()
:
checkObj.prototype.toString = function() {
var result = "checkObj {";
for (var prop in this) {
if (this.hasOwnProperty(prop))
result += (prop + " : " + String(this[prop]).toUpperCase() + ", ");
}
result += ("}");
return result;
}
现在你可以console.log(woo)
,它可以按预期工作。
答案 1 :(得分:1)
您只需要像这样更改inc
功能
checkObj.prototype.inc = function() {
for (var key in this) {
if (this.hasOwnProperty(key)) {
if (typeof this[key] === 'string') {
this[key] = this[key].toUpperCase();
}
}
}
};
这给了我以下输出
{ name: 'RAJORA', title: 'THIS IS A TEST', salary: 2000 }
答案 2 :(得分:1)
演示here。
这样的js代码:
function checkObj (name,title,salary){
this.name= name;
this.title= title;
this.salary= salary;
}
checkObj.prototype.inc=function(){
var self=this;
for(var i in self){
if(self.hasOwnProperty(i)){
output(i);
}
}
function output(item){
if(typeof self[item]==='string'){
self[item]=self[item].toUpperCase();
console.log(self[item]);
}
}
};
对你有帮助吗?