Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从变量访问元素属性_Javascript_Variables_Properties - Fatal编程技术网

Javascript 从变量访问元素属性

Javascript 从变量访问元素属性,javascript,variables,properties,Javascript,Variables,Properties,我有一个函数: this.addNode = function(element){ var context = this.obj.element; return context; } 而this.obj是一个具有某些属性的对象。当我想从上述变量调用这些属性时,如何访问它们?我需要做一些假设,因为示例并不完全清楚。假设您在构造函数中有此代码,并且希望引用此对象的obj.,那么您不能使用,而是像这样使用[] function SomeObj()

我有一个函数:

this.addNode = function(element){

            var context = this.obj.element;
         return context;    
}

而this.obj是一个具有某些属性的对象。当我想从上述变量调用这些属性时,如何访问它们?

我需要做一些假设,因为示例并不完全清楚。假设您在构造函数中有此代码,并且希望引用此对象的
obj.
,那么您不能使用
,而是像这样使用
[]

function SomeObj() {

  this.obj = { a: 1, b: 2 };

  this.addNode = function (element) {
    var context = this.obj[element];
    return context;    
  }
}
var o = new SomeObj();
o.addNode('a'); // returns 1
o.addNode('b'); // returns 2
function SomeObj() {

  var obj = { a: 1, b: 2 };

  this.addNode = function (element) {
    var context = obj[element]; // not using this.obj
    return context;    
  }
}
你可以这样使用它

function SomeObj() {

  this.obj = { a: 1, b: 2 };

  this.addNode = function (element) {
    var context = this.obj[element];
    return context;    
  }
}
var o = new SomeObj();
o.addNode('a'); // returns 1
o.addNode('b'); // returns 2
function SomeObj() {

  var obj = { a: 1, b: 2 };

  this.addNode = function (element) {
    var context = obj[element]; // not using this.obj
    return context;    
  }
}
但通常建议像这样隐藏实现(即
obj
属性)

function SomeObj() {

  this.obj = { a: 1, b: 2 };

  this.addNode = function (element) {
    var context = this.obj[element];
    return context;    
  }
}
var o = new SomeObj();
o.addNode('a'); // returns 1
o.addNode('b'); // returns 2
function SomeObj() {

  var obj = { a: 1, b: 2 };

  this.addNode = function (element) {
    var context = obj[element]; // not using this.obj
    return context;    
  }
}
如果将
obj
作为参数传递给构造函数,则更简单:

function SomeObj(obj) {
  this.addNode = function (element) {
    var context = obj[element]; // not using this.obj
    return context;    
  }
}

var o = new SomeObj({ a: 1, b: 2 });
o.addNode('a'); // returns 1
o.addNode('b'); // returns 2

我希望我猜对了问题。

关于如何访问对象属性的问题太基本了。请参考JS参考手册。您的代码似乎不正确。你想做什么?我知道如何访问propoerty,但是当我尝试通过变量名(如上面的-‘element’变量)访问时,变量没有发送到函数,并且它是未定义的。这只是代码的一部分,this.obj是一个json对象,我想调用相应的属性从变量调用。