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

时间:2016-04-02 21:15:56

标签: javascript

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

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会很麻烦,我希望上面的内容足够,因为问题似乎真的在于我的方式。 m引用对象值。我也知道有几种微妙的不同方式来引用对象属性,但我是javascript的新手,我正在努力绕过它。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

在您的函数中

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())
}