javascript – 有没有办法在Internet Explorer中使用window.hasOwnProperty()?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 有没有办法在Internet Explorer中使用window.hasOwnProperty()?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1682字,纯文字阅读大概需要3分钟。
内容图文
![javascript – 有没有办法在Internet Explorer中使用window.hasOwnProperty()?](/upload/InfoBanner/zyjiaocheng/702/e8a245fd1a19436d96887b3aaa344d49.jpg)
我有一个方法,在Firefox中完美有效,我可以用它来确定特定javascript对象的实例的名称(请不要问为什么我需要它…).
Fr示例:
var temp = new String("hello!");
var theName = getVarName(temp); //returns "temp"
此方法使用“window.hasOwnProperty()”,它在Internet Explorer中不起作用:任何建议?
解决方法:
I have a method, that perfectly works in Firefox, with which I can determine the name of an instance of a particular javascript object
我不认为你这样做,因为在JavaScript中这是不可能的. JS是一种按值调用的语言;当你写:
var temp= 'hello';
getVarName(temp);
这跟说的完全一样:
getVarName('hello');
此时,’temp’作为变量的引用将丢失.我猜你的getVarName函数的作用基本上是这样的:
function getVarName(value) {
for (var name in window) {
if (window[name]===value)
return name;
}
}
这将适用于没有Object.hasOwnProperty()的IE和其他浏览器;它将只返回与参数匹配的任何全局变量的名称.可以将hasOwnProperty()调用添加到此函数中,通过仅允许窗口的直接属性(其充当全局变量,包括您明确设置的那些)而不是其任何原型来稍微优化它.我猜这是你的函数版本正在做什么,但在实践中它几乎没有影响,因为几乎没有任何东西继承到原型的’窗口’.
你通过在一个显式的String对象中装入你的’hello’来混淆一些东西(这是非常不寻常的,很少是一个好主意),这使得有可能使用==有两个不同的’hello’对象. =身份比较器,所以这将工作:
var a= new String('hello!');
var b= new String('hello!');
getVarName(a); // 'a'
getVarName(b); // 'b' - distinguishable object from a
但这仍然不能阻止你做:
var a= new String('hello!');
var b= a;
getVarName(a); // 'a' or 'b', depending on implementation
getVarName(b); // the same 'a' or 'b' as in the previous call
所以,虽然你可以相当无害地失去上面的hasOwnProperty()调用,你正在做的事情不能真正正常工作,你应该看看一个更好的方法来实现你正在做的事情.
内容总结
以上是互联网集市为您收集整理的javascript – 有没有办法在Internet Explorer中使用window.hasOwnProperty()?全部内容,希望文章能够帮你解决javascript – 有没有办法在Internet Explorer中使用window.hasOwnProperty()?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。