在javascript中使用自定义对象中的原型

时间:2013-10-12 11:38:57

标签: javascript object

我已经创建了自定义对象,我想要添加一个方法。我想大写我的价值观。但它给了我[对象对象]。任何想法如何完成它。 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)

3 个答案:

答案 0 :(得分:1)

当您致电console.log()并向其传递woo这样的对象时,它会使用woo.toString()获取字符串表示并打印它。

wootoString()继承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]);
    }
}
};

对你有帮助吗?