gpt4 book ai didi

Javascript:获取对象文字中当前对象属性的名称

转载 作者:行者123 更新时间:2023-11-30 10:39:47 27 4
gpt4 key购买 nike

将此归档在“只是好奇”或“这可能吗?”下

比如说我有...

home: function(options) {
this._home('home', options)
}

login: function(options) {
this._home('login', options)
}

homelogin 显然是许多用于跟踪目的的对象属性的标识符。有没有一种方法可以只返回 homelogin 而无需在对象属性中使用任何变量(外部函数调用也可以)?

更新:事实证明这是不可能的。接受的答案并不能完全回答问题,但它是一个很好的例子,可以简化对同一属性的多次调用。

最佳答案

如果您的意思是在 home 属性引用的函数中您希望能够以某种方式从该属性名称中获取字符串 "home" 而无需对其进行硬编码,那么不,据我所知这是不可能的。

只是猜测您要实现的目标,这样的事情至少有一点帮助:

function callHome(propName) {
return function(options) {
this._home(propName, options);
}
}

var someObj = {
home: callHome('home'),
login: callHome('login')
}
someObj.home({some:"option"});

至少您不必为每个属性重复相同的函数体。演示:http://jsfiddle.net/EeEAw/

注意:我假设调用但未在问题中定义的 _home() 函数将在实际代码中的某处定义。我没有在我的答案中显示它,尽管我在我的 fiddle 中创建了一个虚拟的。

顺便说一句,请注意该函数并不真正“属于”对象或属性 - 没有什么能阻止您做这种事情:

var obj = {
test : "test",
home : function() {
alert(this.test);
}
};
var funcRef = obj.home;
var obj2 = {
method1 : funcRef
}
obj.home = null;
funcRef();
obj2.method1();

也就是说,您可以创建对同一个函数的多个引用,并且即使将原始 obj.home 属性设置为某个其他值,该函数仍将继续存在(只要额外的引用继续存在)。

关于Javascript:获取对象文字中当前对象属性的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11753039/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com