如何通过字符串名称设置defineProperty的值?

时间:2016-12-06 06:13:24

标签: javascript

我想创建带有HTML页面的输出界面,帮助定义属性,但是我找不到如何通过名称为属性设置变量。

var _root = {};
var value = 2;

Object.defineProperty(_root, "MyProperty", {
    get: function(){
        return value;       
    }       
    ,
    set: function(val){
         value = val;       
    },
    enumerable: true,
    configurable: true
}); 

function SetValue( nameProperty ,  value  ){
  nameProperty = value; 
}   

function GetValue( nameProperty){
   return  eval(nameProperty);  
}   

SetValue("_root.MyProperty","35"); // This function is called from C#   webBrowser.Document.InvokeScript("SetValue" , new Object[]{"_root.MyProperty","35" });     

console.log( GetValue( "_root.MyProperty"));

修改 我尝试用eval设置值,但它不起作用。

function SetValue( nameProperty ,  value  ){
    var ob = eval(nameProperty);
    ob =value;
}   

2 个答案:

答案 0 :(得分:0)

你用引号包装东西,这是在传递strings。您希望将object属性作为第一个属性传递,将数字作为第二个属性传递。但是你基本上是在传递毫无意义的文字。

试试这个:

checkout

答案 1 :(得分:0)

我找到了解决问题的方法。

NSString *url = @"https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4";
AVPlayer *player = [AVPlayer playerWithURL:[NSURL URLWithString:url]];
AVPlayerViewController *playerViewController = [AVPlayerViewController new];
playerViewController.player = player;
[self.view addSubview:playerViewController.view];
[self presentViewController:playerViewController animated:YES completion:nil];