本文深入解析JavaScript中window.name属性的独特行为。作为浏览器内置的全局属性,它不同于常规变量,未赋值时默认为空字符串而非undefined。文章详细阐述了其在HTML超链接target属性中的应用,并通过代码示例演示了如何利用该属性实现简单的跨窗口数据传递及类型转换机制。
window.name属性的基本特性
关于浏览器窗口对象中内置的name属性
许多开发者可能未曾留意到一个特殊现象:
在浏览器控制台中直接输出未声明的变量时,系统通常会抛出ReferenceError错误;而声明但未赋值的变量,其输出结果应为undefined。
var a;
//undefined
b;
//报错
然而,存在一个显著的例外情况,即name属性。

事实上,window对象自身就携带了name这一属性,在控制台输入window即可查看到该属性存在。
打开
向下滚动查看即可发现。

window.name在跨窗口通信中的应用
window.name直译为窗口名称,其主要用途是在超链接和表单中为target属性指定目标窗口。具体机制如下文案例所示。
- 构建两个独立的网页文件
第一个页面的代码结构如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSdemo1</title>
</head>
<body>
<a href="./demo2.html" rel="external nofollow" target="hello world">跳转</a>
</body>
</html>
第二个网页的代码结构如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSdemo2</title>
<script>
document.write( window.name + "<br>" + name )
</script>
</head>
<body>
</body>
</html>
当我们打开第一个页面并点击跳转链接时,可以观察到以下效果:


由此可见,第一个页面中的a标签通过target属性将特定值传递给了第二个窗口的name属性,从而使第二个网页的window.name属性获得了该值。
此外需注意,当给name赋值时,window.name会调用类似于toString的方法,将赋给它的值转换为对应的字符串表示。

现在我们已经了解了window.name的基本属性,可以尝试完成以下练习题以巩固知识。
var name = 123;
var obj = {};
console.log(name + 123 + obj )
到此这篇关于JavaScript中window.name属性详解的文章就介绍到这了,更多相关JavaScript window.name属性内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!