有没有解决方案来获取对象的函数名称?
function alertClassOrObject (o) {
window.alert(o.objectName); //"myObj" OR "myClass" as a String
}
function myClass () {
this.foo = function () {
alertClassOrObject(this);
}
}
var myObj = new myClass();
myObj.foo();
Run Code Online (Sandbox Code Playgroud)
for (var k in this) {...}- 没有关于className或的信息ObjectName.有可能得到其中一个吗?
我在回调函数中引用我的对象时遇到了一些普通的旧JavaScript(没有框架)的问题.
function foo(id) {
this.dom = document.getElementById(id);
this.bar = 5;
var self = this;
this.dom.addEventListener("click", self.onclick, false);
}
foo.prototype = {
onclick : function() {
this.bar = 7;
}
};
Run Code Online (Sandbox Code Playgroud)
现在当我创建一个新对象时(在DOM加载后,使用span #test)
var x = new foo('test');
Run Code Online (Sandbox Code Playgroud)
onclick函数中的'this'指向span#test而不是foo对象.
如何在onclick函数中获取对foo对象的引用?
是否可以将对象属性名称作为字符串
person = {};
person.first_name = 'Jack';
person.last_name = 'Trades';
person.address = {};
person.address.street = 'Factory 1';
person.address.country = 'USA';
Run Code Online (Sandbox Code Playgroud)
我想像这样使用它:
var pn = propName( person.address.country ); // should return 'country' or 'person.address.country'
var pn = propName( person.first_name ); // should return 'first_name' or 'person.first_name'
Run Code Online (Sandbox Code Playgroud)
先谢谢你
注意:此代码正是我正在寻找的.我明白这听起来很愚蠢,但事实并非如此.
这就是我想用它做的事情.
HTML
person = {};
person.id_first_name = 'Jack';
person.id_last_name = 'Trades';
person.address = {};
person.address.id_address = 'Factory 1';
person.address.id_country = 'USA';
extPort.postMessage
(
{
message : MSG_ACTION,
propName( person.first_name ): person.first_name
} …Run Code Online (Sandbox Code Playgroud) 可以说我有
var myObject = {
'myFunction' : function () {
// something here that lets me get 'myObject'
}
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了在这里找到的各种函数和类似this.constructor.name但我总是得到'对象'作为返回的值.有没有办法在这种情况下获得变量的实际名称?
编辑解释为什么这样也许人们会更好地理解...我希望能够创建一个用setInterval连续调用的函数.像这样的东西:
var myObject = {
'intval' : '',
'timeout' : 500,
'start' : function () {
this.objectName = 'myObject'; // <--I want this to be dynamically popped
this.intval=window.setInterval("window['"+this.objectName+"'].myFunction()",this.timeout);
},
'stop' : function () {
window.clearInterval(this.intval);
this.intval='';
},
'myFunction' : function () {
// do something
}
}
Run Code Online (Sandbox Code Playgroud)
如果我将'myObject'硬编码到this.objectName但是我不希望它被硬编码,这可以正常工作.问题是我不想setInterval("window[this.objectName]",100) because这样is not in the …
例如,我在这里有一个对象
var obj = {a:1,b:2,c:3}
Run Code Online (Sandbox Code Playgroud)
我怎么能得到一个字符串"obj"的obj'name?
我在使用JavaScript中的字符串中获取类名时遇到问题.
例如:
var ddd="<p class='Box_title'>Heading text here...</p>";
Run Code Online (Sandbox Code Playgroud)
从那以后我想得到p标签的类名.
如何引用变量的名称(字面意思是变量的名称)?
我有以下代码:
var thisVariableName = 'path/filename.js';
var script = document.createElement('script');
script.id = **I WANT THE TEXT "thisVariableName" to be added HERE**
script.type = 'text/javascript';
script.src = thisVariableName;
Run Code Online (Sandbox Code Playgroud)
因此,如果输出script.id,我会得到thisVariableName,而不是变量的值
在一些反应之后:
我想系统化添加许多脚本文件.在下面的示例中,我添加了四个文件,但想象一下我必须添加30多个文件(请保留自己,不要问为什么我需要添加30多个文件;毕竟这是计算的承诺)
截至目前,我知道如何完成这一任务的唯一方法是创建两个单独的数组; 数组1表示文件的名称字符串,数组2表示文件的路径,或者ALTERNATIVELLY,因为Felix Kling SUGGESTS为每个变量创建一个对象:
var jQueryPath = 'js/jquery-1.5.1.js';
var jQueryUICore = 'js/jquery.ui.core.js';
var jQueryUIWidget = 'js/jquery.ui.widget.js';
var jQueryUITabs = 'js/jquery.ui.tabs.js';
var fileNames = new Array ('jQueryPath','jQueryUICore','jQueryUIWidget','jQueryUITabs');
var filePaths = new Array (jQueryPath,jQueryUICore,jQueryUIWidget,jQueryUITabs);
var head = document.getElementsByTagName("head")[0];
for (var i=0;i<4;i++){
var script = document.createElement('script');
script.setAttribute('id',fileNames[i]);
script.setAttribute('type','text/javascript');
script.setAttribute('src', filePaths[i]);
head.appendChild(script);
}
Run Code Online (Sandbox Code Playgroud)
因此,无论是创建数组来保存变量的名称和值,还是创建对象,都需要为每个文件单独创建两个属性. …
javascript ×7
object ×3
binding ×1
callback ×1
css ×1
events ×1
properties ×1
scope ×1
string ×1
variables ×1