Javascript 访问父属性

标签 javascript

如何获得家长选项?

我想访问全局 myObject 选项

var myObject = {    
  method: function(){
    this.options = {};
  },      
  property: {    
    propertyMethod: function(){
       alert(this.options);
    }     
  }    
}    
myObject.method();
myObject.property.propertyMethod();

最佳答案

如果你的意思是,你想从 property.propertyMethod 中访问 myObjectoptions 属性,除了利用 propertyMethodmyObject 变量的闭包这一事实,例如:

var myObject = {    
  method: function(){
    this.options = {};
  },      
  property: {    
    propertyMethod: function(){
       alert(myObject.options); // <=== Change is here
    }     
  }    
}    
myObject.method();
myObject.property.propertyMethod();

...这通常不是一个好主意。 :-) 相反,您可能想要以不同的方式设计您的对象。例如:

var myObject = (function() {
  var obj = {
    method: function(){
      obj.options = {};
    },      
    property: {    
      propertyMethod: function(){
         alert(obj.options);
      }     
    }    
  };
  return obj;
})();
myObject.method();
myObject.property.propertyMethod();

这样,您就可以使用函数调用的执行上下文。但如果您打算这样做,也许可以进入下一步:

function makeObject() {
  var obj = {
    method: function(){
      obj.options = {};
    },      
    property: {    
      propertyMethod: function(){
         alert(obj.options);
      }     
    }    
  };
  return obj;
}
var myObject = makeObject();
myObject.method();
myObject.property.propertyMethod();

...所以您可以制作多个。或者甚至制作一个真正的构造函数:

function MyObject() {
  var obj = this;

  obj.method = function(){
    obj.options = {};
  };      

  obj.property = {    
    propertyMethod: function(){
       alert(obj.options);
    }     
  };
}
var myObject = new MyObject();
myObject.method();
myObject.property.propertyMethod();

...虽然因为您没有利用原型(prototype),所以没有太多理由让它成为构造函数。

关于Javascript 访问父属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14857901/

相关文章:

javascript - 如何使用 Node 从 POST 请求中获取同名复选框的值?

javascript - 拉斐尔累积与绝对缩放/旋转/平移?

javascript - Google maps api v 3 - 更改自定义标记图标的来源

javascript - querySelector() 未修改 &lt;input&gt; 标记中的 value、onblur 或 onfocus 的问题

javascript - Rangey:获取选定节点的新方法

javascript - 如何从 CMD 命令行启动 Node.js 应用程序,并从另一个 .Net core 3.0 应用程序调用它?

javascript - 对JS对象中的解构元素进行操作

javascript - 如何验证拖放 html 5 表单?

javascript - RefluxJS 存储在调用 trigger() 时能否指示哪个属性已更改?

javascript - 如何用空格替换字符串中的所有特殊字符