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

using prototype in custom object in javascript

本文关键字:对象 原型 自定义 JavaScript      更新时间:2023-09-26

我已经制作了我的自定义对象,我想添加一个方法。我想大写我的值。但它给了我[对象对象]。知道如何完成它。小提琴

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)

你只需要像这样改变你的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 }

当你调用console.log()并传递给它一个像woo这样的对象时,它使用woo.toString()来获取它的字符串表示并打印它。

wooObject.prototype继承toString(),默认情况下,打印您获得的字符串,即 [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),它将按预期工作。

演示在这里。

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]);
    }
}
};

对你有帮助吗?