我已经设计出一种方法,该方法通过创建一种返回对象属性的方法来访问这些对象的私有属性。但是,我想创建一个可以基于传递的字符串参数返回任何对象属性的函数。
这是我要执行的操作的一个示例:
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”返回的不是变量。我不在正确的范围内,因此无法使用this [propName],也无法使用that / self技术访问范围。
如何使用字符串返回对象属性?
一种简单的解决方案是将私有变量包装在这样的对象中:
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句