我正在学习面向对象的Javascript,并试图解决一个非常简单的问题。给定一个字符串,使用以下规则将其转换为另一个字符串:
这是我的代码:
var DnaTranscriber = function(){};
DnaTranscriber.prototype = {
map: {G:'C', C:'G', T:'A', A:'U'},
toRna: function(dna) {
return dna.split('').map(this.mapper).join('');
},
mapper: function(dnaChar){
if(this.map[dnaChar]) return this.map[dnaChar];
throw new Error('Invalid input');
}
};
var d = new DnaTranscriber();
d.toRna('C');

但是,尝试执行此代码会引发错误:
TypeError:无法读取属性' C'未定义的
为什么this.map
内的mapper
未定义?