前端面试热点:JavaScript作用域、原型链与闭包解析
1星 需积分: 50 126 浏览量
更新于2024-09-04
1
收藏 877B TXT 举报
"本资源是一份前端面试题集,主要涉及JavaScript的基础概念,包括作用域、原型、原型链、闭包、上下文环境、DOM和BOM操作,以及封装函数和深度克隆等。同时,题目中还包含了关于JavaScript变量作用域、对象实例属性优先级及动态特性的问题。"
以下是针对题目内容的详细解释:
(1)在这个HTML结构中,我们通过`getElementsByTagName('li')`获取了所有`li`元素,并为它们的`onclick`事件绑定了一个函数,该函数会弹出变量`i`的值。然而,由于JavaScript的作用域机制,这里的`i`是函数外部的变量,当点击时,`i`的值已经是循环结束后的`length`,即4。因此,无论点击哪个`li`元素,都会弹出4。
(2)这段代码检查`window`对象上是否已经有一个名为`a`的属性。如果没有,它会创建一个全局变量`a`并赋值为1。由于在`window`对象上没有`a`属性,所以`a`被初始化为1。然后,`alert(a)`会弹出1,因为全局变量`a`已被定义。
(3)这部分代码涉及到JavaScript的原型链和构造函数。首先,我们有三个构造函数`A`、`B`和`C`。`A`和`B`的原型上都有一个`a`属性,值为1,而`C`的原型上的`a`属性默认是未定义的,但当传入参数`a`时,`C`会创建一个实例属性`a`。当我们创建新的对象实例并打印`a`属性时:
- `new A().a`:由于实例没有自己的`a`属性,它会向上查找原型链,找到`A.prototype`上的`a`,输出1。
- `new B().a`:同理,`B`的实例也没有自己的`a`属性,所以它也会在原型链上找到`B.prototype`的`a`,输出1。
- `new C(2).a`:`C`的构造函数接收到参数`2`,所以创建了一个实例属性`a`,其值为2,而不是查找原型链,因此输出2。
总结,这道题目考察了JavaScript中的基础概念,如作用域、原型链、构造函数以及变量和属性的查找规则。对于前端开发者来说,深入理解这些概念至关重要,因为它们构成了JavaScript语言的核心。
154 浏览量
218 浏览量
457 浏览量
160 浏览量
点击了解资源详情
点击了解资源详情
sy_xiaozhu
- 粉丝: 22
- 资源: 1
最新资源
- servo-example-0.5.2.zip
- net.tsinghua:针对清华学生的跨平台自动登录实用程序
- 49个苹果app图标 .sketch素材下载
- 基于HTML实现的仿享客零食网触屏版html5手机wap购物网站模板下载(css+html+js+图样).zip
- 单片机太阳能路灯控制系统仿真protues
- node-simple-deploy
- HWHelpNow:hwhelpnow.com官方GitHub Repo
- yii2-widgets:Yii Framework 2.0有用的小部件集合
- 易语言复制组件到选择夹子夹
- MDB_3.0,999玫瑰c语言表白源码,c语言
- dotfiles:每天使用.dotfiles
- storemate-backend-leveldb-0.9.23.zip
- 基于ASP.net数据存储与交换系统设计(源代码+论文).rar
- Javascript-30-WesBos
- 夸克:离线时保持快乐| 世界上第一个离线搜索引擎
- Recipes