为对象原型提供一个方法,该方法指向对象自身属性的值

Giving a method to an object prototype that points at the value of that objects own properties

本文关键字:对象 方法 属性 一个 原型      更新时间:2023-11-28

我写了一个小程序,从两个用户输入中获取单词的英文版和西班牙文版,并将它们存储为对象:

function Dictionary(english, foreign){
    this.english = english;
    this.foreign = foreign; 
}

然后将这些对象存储在一个数组中;objectsArray[]。然后,我为"Dictionary"原型分配了一个方法,使输入的字符串变成大写:

Dictionary.prototype.capMethod = function(){
    this.english.toUpperCase();
    this.foreign.toUpperCase();
}

一旦用户输入了所有的翻译(稍后将对其进行测试),我就尝试调用字典的capMethod:

for(var x in objectsArray){
                objectsArray[x].capMethod();
                console.log(objectsArray[x].english + objectsArray[x].foreign + typeof objectsArray[x].english); }

然而,控制台并不建议将它们更改为大写。当英语和外国值返回给用户(稍后在程序中)时,这一点得到了证实。

我强调,在程序的其他部分,我可以做出这样的改变,但不理解我在这里的错误似乎是用另一种方式做的一个糟糕的理由。

我确实需要将存储在字典中的字符串大写,并且它周围有很多代码,所以JSfiddle会很麻烦,我希望以上内容就足够了,因为问题似乎真的在于我引用对象值的方式。我也知道引用对象属性有几种微妙的不同方法,但我对javascript很陌生,很难理解

我在这里做错了什么?

在您的函数中

Dictionary.prototype.capMethod = function(){
    this.english.toUpperCase();
    this.foreign.toUpperCase();
}

没有使用"toUpperCase()"的结果。

this.english = this.english.toUpperCase();

会更好。

像这样存储对象对你有用吗?:

function store(english,foreign){
  objectsArray.push({
    english:english.toUpperCase(),
    foreign:foreign.toUpperCase())
}