我在JavaScript代码的某个地方有一个变量。现在,我想获得声明该变量的函数的名称(也称为作用域)。因此,例如,如果该变量是一个oject的字段,我希望得到对象类型的名称。
考虑以下代码:
function MyClass() {
this.name = "MyName";
this.age = 20;
}
var myVariable = new window.MyClass();
alert(getDeclaringScope(myVariable)) // should alert 'window'
alert(getDeclaringScope(myVariable.name)) // should alert 'MyClass有任何方法来实现getDeclaringScope函数吗?
更新
我想使用这样的技术来访问一种“静态”变量,其中元信息存储在可以观察到的层次上。一个非常简化的例子:
var META = {};
META["MyClass"] = {};
META["MyClass"]["MyArray"] = { ElementType: "MyOtherClass" };
function MyClass() {
this.MyArray = ko.observableArray();
}
function MyOtherClass() {
this.name = "a";
}
ko.observableArray.fn.addFromPlainObjects = function(plainItems) {
var elemType = .... here I wanted to get "MyOtherClass" from the META global variable
// create MyOtherClass and map the plain items to it... etc.
}发布于 2014-07-15 10:54:45
不是的。
对象具有对其构造函数的引用,但是可以从许多对象引用构造函数,而不仅仅是window。可以使用变量(相对于属性)直接访问它:
var MyClass = window.MyClass;
var foo = new MyClass();可以在对象模型中显式创建回引用,因为构造函数是对象.
window.MyClass.backref = window;虽然这很可能不是你想要的。我怀疑您对变量的作用域有误解;变量作用域与对象属性无关。因此,没有“声明作用域”的概念来表示从其中检索变量引用的对象和对象属性,就像您似乎将其概念化一样。
https://stackoverflow.com/questions/24756096
复制相似问题