我想创建与HTML页面的输出接口,并为其定义属性,但没有找到如何通过名称为属性设置变量。如何通过字符串名称设置defineProperty的值?
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;
}
您的代码正在工作。有什么问题? – Andrew
我需要设置值,但只知道属性的字符串。例如eval(“_root.MyProperty”)= 34不起作用 – askeet
'defineProperty(_root,propname,{...})' – 2016-12-06 06:49:17