我通过创建一个返回这些属性的方法,找到了一个访问对象私有属性的方法。但是我想创建一个函数,它可以根据传递的字符串参数返回任何对象属性。
这是我想要做的一个例子:
function MyObj() {
var myProp = 10;
this.getProp = function( propName ) {
return( propName ); // THIS IS WHERE I AM STUCK
};
}
MyObj.prototype.getMyProp = function() {
return this.getProp( 'myProp' );
};
var myObj = new MyObj();
console.log( myObj.getMyProp() );
从这个例子可以看出字符串" myProp"返回的不是变量。我无法使用此[propName],因为我没有在正确的范围内,我无法使用该/ self技术访问范围。
如何使用字符串返回对象属性?
答案 0 :(得分:3)
一个简单的解决方案是将私有变量包装在这样的对象中:
function MyObj() {
var privateVars = {
myProp: 10
};
this.getProp = function( propName ) {
return privateVars[propName];
};
}
MyObj.prototype.getMyProp = function() {
return this.getProp( 'myProp' );
};
var myObj = new MyObj();
console.log( myObj.getMyProp() ); // 10
更新:eval
似乎也适用于这种情况,但我不推荐它:
function MyObj() {
var myProp = 10;
this.getProp = function( propName ) {
return eval(propName);
};
}
MyObj.prototype.getMyProp = function() {
return this.getProp( 'myProp' );
};
var myObj = new MyObj();
console.log( myObj.getMyProp() ); // 10