前端js面试题
前端工程师面试题及答案
前端工程师面试题及答案
前言:
前端工程师是近年来热门的职业之一,对于公司而言,拥有一名优秀的前端工程师可以提升产品的用户体验和界面设计的质量。面试是评估候选人技能和能力的重要环节。下面是一些常见的前端工程师面试题及答案,希望对您有所帮助。
一、HTML/CSS相关问题
1. 什么是HTML?什么是CSS?
HTML全称Hyper Text Markup Language,是用于创建网页的标准标记语言。
CSS全称Cascading Style Sheets,用于描述网页元素样式的语言。
2. HTML5有什么新特性?
HTML5引入了许多新的元素和API,如语义化标签、本地存储、多媒体元素、Canvas绘图等。
3. 解释下Box模型。
Box模型是指网页中的每个元素都可以看作是一个盒子,包括内容区域、填充区域、边框和外边距。
4. 请简述flex布局。
Flex布局(Flexible Box Layout)是CSS3新增的一种布局模式,可
以轻松实现灵活的盒子布局。
5. 解释下CSS选择器及其优先级。
CSS选择器用于选择要样式化的HTML元素。优先级是指当多个选择器同时作用于同一个元素时,浏览器根据一定规则来确定使用哪个
样式。
二、JavaScript相关问题
1. JavaScript是一种编程语言还是脚本语言?
JavaScript是一种弱类型、解释性的脚本语言。
2. 解释下变量的作用域。
变量的作用域指的是变量的可访问范围,分为全局作用域和局部作
用域。
3. 请解释下什么是闭包。
闭包是指在一个函数内部定义的函数,并且可以访问父函数的变量。闭包可以保护变量不受外部的干扰。
【最新考试题库及答案】web前端面试题及答案
web前端面试题及答案
为的web前端面试题及答案,供各位参考。
1、怎样添加、移除、移动、复制、创建和查找节点?
创建新节点:
creatDocumentFragment(),创建一个DOM片段。creatElement(),创建一个具体的元素。
creatTextNode(),创建一个文本节点。
添加、移除、替换、插入:
appendChild(),添加。
removeChild(),移除。
replaceChild(),替换。
Before(),插入。
查找:
getElementsByTagName(),通过标签名称。getElementsByName(),通过元素的Name属性的值。getElementById(),通过元素id,唯一性。
2、JS中什么是伪数组?如何将伪数组转化为标准数组?
伪数组(类数组):无法直接调用数组方法或期望length属性有什么特殊的行为。但仍可以对真正数组遍历方法来遍历它们。典型的是函数的arguement参数,还有像调用getElementsByTagName()、document.childNodes()之类的,它们都返回NodeList对象,都属于伪数组。可以用
Array.prototype.slice.call(fakeArray)将数组转化为真正的Array对象。3、JS中callee和caller的作用。
caller是返回一个对函数的引用,该函数调用了当前函数;callee是返回正在被执行的函数,也就是所指定的function对象的正文。
4、请说出三种减低页面加载时间的方法。
前端工程师面试题题及答案(全面综合)
1. 要动态改变层中内容可以使用的方法有(AB )
a)innerHTML
b)innerText
c)通过设置层的隐藏和显示来实现
d)通过设置层的样式属性的display属性
2. 在javascript里,下列选项中不属于数组方法的是(B);
a)sort()
b)length()
c)concat()
d)reverse()
3 、var emp = new Array(3);
for(var i in emp)
以下答案中能与for循环代码互换的是: (选择一项)。(D )
A for(var i =0; i
B for(var i =0; i
C for(var i =0; i
D for(var i =0; i
4 下列声明数组的语句中,错误的选项是(C )。
a)Var arry= new Array()
b)Var arry=new Array(3)
c)Var arry[]=new Array(3)(4)
d)Var arry=new Array(‘3’,’4’)
5. 下列哪一个选项不属于document对象的方法?(D )
a)focus()
b)getElementById()
c)getElementsByName()
d)bgColor()
6. 、display属性值的常用取值不包括(C )
a)inline
b)block
c)hidden
d)none
7. 以下有关pixelTop属性与top属性的说法正确的是。(D )
a)都是Location对象的属性
b)使用时返回值都是字符串
c)都是返回以像素为单位的数值
Web前端中级面试题
Web前端中级面试题
一、不定项选择
1. flex属性是下列哪三个属性的缩写?( )
A.flex-grow
B.flex-wrap
C.flex-shrink
D.flex-basis
2. 下列哪些选项是JavaScript中的假值(Falsy value)?( )
A. 0
B. ""
C. null
D. undefined
E. NaN
F. "false"
3. 下列选项中,不是window对象的属性的是( )
A. pageX
B. location
C. history
D. navigator
4. 下面程序输出的结果是什么?( )
function sayHi() {
console.log(name);
console.log(age);
var name = "Lydia";
let age = 21;
}
sayHi();
A: Lydia 和undefined
B: Lydia 和ReferenceError
C: ReferenceError 和21
D: undefined 和ReferenceError
5. 下列关于原型的说法错误的是( )
A. 原型可以节省内存空间
B. 构造函数中的prototype属性,它是一个对象,我们称之为原型
C. 原型有constructor属性,原型的constructor属性指向构造函数
D. 任何一个对象都有__proto__属性,实例的对象的__proto__属性指向构造函数
二、填空题
1. JavaScript是由哪几部分组成。
2. 表达式“123abc”-“123”的计算结果是。
js前端面试题
js前端面试题
JavaScript(简称JS)是一门广泛应用于网页开发的脚本语言,也
是前端开发者必备的技能之一。在面试过程中,经常会涉及到JS面试题,以检验面试者的掌握程度和解决问题的能力。本文将深入探讨一
些常见的JS前端面试题,帮助读者更好地准备面试。
1. 介绍一下JavaScript的数据类型和变量声明
JavaScript的数据类型包括基本类型和引用类型。基本类型包括数
字(Number)、字符串(String)、布尔值(Boolean)、空值(Null)和未定义(Undefined)。引用类型包括对象(Object)、数组(Array)、函数(Function)等。变量声明使用关键字var、let或const,其中var是旧的声明方式,let和const是ES6引入的新的声明方式,let用于声明可变的变量,const用于声明不可变的变量。
2. 解释一下闭包是什么,以及它的作用和用法
闭包是指一个函数能够访问并操作其父函数作用域内的变量,即使
该父函数已经执行完毕。闭包的作用是可以创建私有变量,并且这些
变量在函数执行完后依然可以被访问。闭包的用法常见于模块化开发、封装私有属性和方法等。
3. 什么是作用域链?
作用域链是指由函数嵌套关系所创建的作用域的链式结构。当访问
一个变量时,JavaScript引擎会按照作用域链的顺序从内到外进行查找,直到找到对应的变量或者到达全局作用域(window对象)为止。
4. 解释一下事件冒泡和事件捕获的机制
事件冒泡指的是当一个元素触发了某个事件时,该事件会向上冒泡
前端面试题及答案
前端面试题及答案
在前端领域中,面试是获取工作机会的重要环节。为了帮助准备前端面试的候选人们,本文将提供一些常见的前端面试题及其答案,以供参考。
一、HTML相关面试题
1. 请简述HTML的概念和作用。
HTML是超文本标记语言的缩写,用于构建网页的标准标记语言。它通过标签来定义页面的结构和内容,并与CSS和JavaScript等其他技术协同工作,实现页面的渲染和交互。
2. 请解释一下HTML5的新特性。
HTML5引入了许多新特性,例如语义化标签(如header、footer、nav等)、视频和音频元素、Canvas绘图功能、本地存储(localStorage 和sessionStorage)、WebSocket等。这些特性提升了网页的功能和性能,使开发者能够更好地构建富交互、多媒体的网页应用。
3. 请描述一下HTML元素的块级元素和内联元素的区别。
块级元素会独占一行,相邻的两个块级元素会自动换行。常见的块级元素有div、p、h1等。而内联元素不会换行,会在一行内按照从左到右的顺序排列。常见的内联元素有span、a、em等。此外,块级元素可以包含内联元素,但是内联元素不能包含块级元素。
二、CSS相关面试题
1. 请解释一下盒模型。
盒模型描述了一个HTML元素所占空间的模型。它由内容区、内边距、边框和外边距组成。其中,内容区的大小由width和height属性决定,内边距由padding属性决定,边框由border属性决定,外边距由margin属性决定。
2. 如何实现水平居中一个块级元素?
要实现水平居中一个块级元素,可以设置其左右外边距为auto,同时将其display属性设置为block。例如,假设元素的宽度为300px,可以使用如下CSS代码:
前端技术模拟面试题及答案
前端技术模拟面试题及答案
一、选择题
1. 以下哪个不是JavaScript的数据类型?
A. 数字
B. 字符串
C. 布尔值
D. 列表
答案:D
2. CSS中,以下哪个属性用于设置元素的宽度?
A. width
B. height
C. margin
D. padding
答案:A
3. HTML5中,用于定义文档类型声明的标签是?
A. <!DOCTYPE html>
B. <html>
C. <head>
D. <body>
答案:A
二、简答题
1. 请简述什么是闭包,并给出一个闭包的示例代码。
答案:闭包是指一个函数能够记住并访问其创建时的作用域中的变量,即使该函数在其原始作用域之外被执行。示例代码:
```javascript
function createClosure() {
var secret = "I am a closure";
return function() {
console.log(secret);
};
}
var myClosure = createClosure();
myClosure(); // 输出: I am a closure
```
2. 解释一下什么是跨站脚本攻击(XSS)以及如何预防它。
答案:跨站脚本攻击(XSS)是一种网络安全漏洞,攻击者通过在网页中注入恶意脚本,当其他用户浏览该网页时,这些脚本会在用户的浏览器中执行。预防XSS的方法包括:对用户输入进行严格的验证和过滤,使用HTTP-only Cookies,实施内容安全策略(CSP)等。
前端高级面试题
前端高级面试题
前言:面试是求职过程中非常重要的一环,特别是在技术领域。对于前端开发岗位来说,面试官通常会提问一些高级的技术问题,以评估应聘者的技能水平和解决问题的能力。本文将介绍一些常见的前端高级面试题,并提供详细的答案和解析,帮助读者更好地准备前端高级面试。
一、HTML/CSS
1. 请解释什么是盒模型,以及盒模型分为哪几个部分?
答:盒模型是指在Web页面布局中,每个元素都被看作是一个矩形的盒子,该盒子有四个部分组成:content(内容区域)、padding(内边距)、border(边框)和margin(外边距)。
2. 请解释什么是响应式设计?
答:响应式设计是一种网页设计方法,旨在使网站能够自动适应不同设备的屏幕大小和分辨率,包括电脑、平板和手机等。通过使用媒体查询和弹性布局等技术,实现页面元素的自适应和优化,以提供更好的用户体验。
二、JavaScript
1. 什么是闭包?请举例说明闭包的用途。
答:闭包是指函数能够访问和操作其外部环境中的变量,即使在函数外部已经执行完毕。闭包的一个常见用途是创建私有变量,防止变量被外部访问和修改。
示例:
```
function outerFunction() {
var privateVariable = 10;
function innerFunction() {
console.log(privateVariable);
}
return innerFunction;
}
var closure = outerFunction();
closure(); // 输出: 10
前端面试题及答案
前端面试题及答案
在前端开发领域,面试是一项非常重要的环节,无论是找工作还是招聘人才,都需要经过一轮又一轮的面试。面试题的设计既需要考察面试者的基础知识,又要测试其解决问题的能力和思维方式。本文将为大家整理一些常见的前端面试题以及相应的答案,希望能够帮助读者提升面试技巧和准备水平。
1. 请介绍一下你对前端开发的理解和经验。
答:前端开发是指专门从事网站或者 Web 应用界面的开发工作。前端开发涉及到 HTML、CSS 和 JavaScript 的使用,用于创建和布局网页,实现用户交互以及优化用户体验。我拥有X年的前端开发经验,熟练掌握HTML、CSS和JavaScript,熟悉常见的前端开发框架和工具,并且具备实际项目经验。
2. 请问什么是响应式布局?如何实现响应式布局?
答:响应式布局是一种网页设计的方法,使得网页能够在不同的设备上以不同的方式进行展示,从而适应不同的屏幕尺寸和分辨率。响应式布局的实现可以通过使用CSS3的媒体查询来实现,根据不同的屏幕尺寸和分辨率应用不同的CSS样式。
3. 请列举一些你常使用的前端开发工具和框架。
答:我常使用的前端开发工具包括代码编辑器(如Visual Studio Code、Sublime Text)、调试工具(如Chrome开发者工具)、版本控制工具(如Git)等。而在框架方面,我熟悉常用的前端框架如React、Angular和Vue.js等,这些框架都能大大简化前端开发过程,提高开发效率。
4. 请问什么是跨域请求?如何解决跨域问题?
答:跨域请求是指当浏览器中的一个页面尝试通过XMLHttpRequest或Fetch API请求另一个域名下的资源时发生的安全机制。浏览器中的同源策略要求请求必须来源于同一域名、端口和协议,否则会被浏览器拒绝。解决跨域问题的方法有多种,如使用JSONP、CORS(Cross-Origin Resource Sharing)、代理服务器等。
高级前端面试题及答案
高级前端面试题及答案
前言:
在现今竞争激烈的互联网行业中,作为一名高级前端工程师,拥有扎实的专业知识和技能,面试环节是成为顶尖人才的重要关卡。本文将介绍一些常见的高级前端面试题目,并提供详细的解答,帮助读者更好地准备面试。
1. ES6有哪些新特性?
ES6(ECMAScript 2015)作为JavaScript的最新版本,引入了许多令人激动的新特性。以下是一些主要的ES6新特性:
- let和const关键字:用于声明块级作用域中的变量和常量。
- 箭头函数:更简洁的函数定义语法,自动绑定上下文。
- 模板字符串:支持多行字符串和变量插值。
- 解构赋值:从数组和对象中提取值并赋给多个变量。
- 简化的对象字面量语法:定义对象时,无需重复书写键和值。
- 模块化:通过import和export关键字,实现模块化开发。
- Promise:更便捷地处理异步操作和回调函数。
- 类和继承:更接近面向对象编程的编写方式。
- 简化的迭代器和生成器:用于遍历数据集合的简洁语法。
2. 介绍一下跨域及其解决方案。
跨域是指在浏览器中,由于浏览器的安全策略限制,不同域下的页
面之间无法进行直接的交互。
常见的跨域解决方案包括:
- JSONP:通过动态创建<script>标签,实现跨域获取数据。
- CORS(跨域资源共享):在服务器返回的响应头中添加Access-Control-Allow-Origin等字段,允许其他域的请求访问。
- 代理服务器:在同一域下创建一个代理服务器,将跨域请求转发
至目标服务器。
- WebSocket:跨域问题不适用于WebSocket,可以通过WebSocket
前端面试题及答案
前端面试题及答案
前言:
随着互联网行业的飞速发展,前端开发工作的需求也越来越大。为了获得更好的职业机会,提前准备好前端面试题及答案是非常有必要的。本文将提供一些常见的前端面试题及相应的答案,希望能够帮助读者在面试过程中取得好的成绩。
题目一:请解释什么是盒模型?
答案一:
盒模型是指在网页布局中将元素看作是一个矩形的盒子,每个盒子由内容区域、内边距、边框和外边距组成。其中,内容区域指的是元素的实际内容,内边距是内容区域与边框之间的距离,边框是围绕内容区域和内边距的线条,外边距是边框与相邻元素之间的距离。
题目二:请解释什么是响应式网页设计?
答案二:
响应式网页设计是指一种可以适应不同终端和屏幕尺寸的网页设计方法。通过使用CSS媒体查询、弹性布局和流式布局等技术,使网页在不同设备上显示时具有较好的用户体验。响应式网页设计可以使网站不再需要为每种设备单独创建不同的版本,从而减少了工作量和维护成本。
题目三:请解释什么是跨域?
答案三:
跨域是指在浏览器中,当前网页的域名、协议、端口与请求的目标
资源不一致时,浏览器会限制发起跨域请求。这是由于浏览器的同源
策略(Same-Origin Policy)所决定的。同源策略要求当前网页与请求
目标资源在同一域名下,使用相同的协议和端口。如果不满足同源策
略的条件,浏览器就会阻止跨域请求。
题目四:请解释什么是闭包?
答案四:
闭包是指一个函数以及该函数的词法环境的组合。在JavaScript中,每当函数被创建时,在创建时的词法环境外部还会存在一个引用,这
个引用就形成了闭包。闭包可以保存函数内部的变量和状态,并且可
前端js面试题及答案
前端js面试题及答案
面试是求职者进入前端行业的重要环节,了解常见的前端JavaScript面试题及相应的答案是备战面试的关键。本文将介绍一些常
见的前端JavaScript面试题及答案,以帮助读者更好地应对面试。
一、JavaScript基础
1. 什么是JavaScript?
JavaScript是一种广泛应用于网页端的脚本语言,它可以为网页添
加交互性和动态性。
2. JavaScript有哪些数据类型?
JavaScript有七种数据类型,包括未定义的(undefined)、空值(null)、布尔值(boolean)、数字(number)、字符串(string)、
对象(object)和符号(symbol)。
3. JavaScript中的闭包是什么?
闭包是指一个函数可以访问并操作其所在外部函数的变量。它可以
使用父函数中的变量并将其保留在内存中,即使父函数已经执行完毕。
4. JavaScript中的作用域是什么?
作用域指的是变量的可访问范围。在JavaScript中,有全局作用域
和函数作用域。全局作用域中定义的变量可以在整个代码中访问,而
函数作用域中定义的变量只能在函数内部访问。
5. 如何避免JavaScript中的变量污染?
可以使用立即调用的函数表达式(IIFE)来创建一个独立的作用域,这样变量就不会泄漏到全局作用域中。另外,使用严格模式("use strict")也可以限制变量的作用范围。
二、DOM操作
1. 什么是DOM?
DOM(Document Object Model)是一种用于处理HTML和XML文档的编程接口。它将文档视为一个由节点组成的树状结构,通过操作
前端开发面试题及答案
前端开发面试题及答案
1. 什么是前端开发?
答:前端开发是一门技术,其主要目的是使用 HTML,CSS 和 JavaScript 来创建动态网页,视图和用户界面。
2. 如何使用CSS制作一个圆角边框?
答:使用 CSS 的 border-radius 属性可以制作圆角边框,如:border-radius: 10px;
3. 请描述流式布局的概念。
答:流式布局是一种网页布局技术,它可以根据浏览器窗口大小自动调整页面中元素的位置和大小。
4. 请描述XML及其用途。
答:XML(可扩展标记语言)是一种标记语言,可以用来存储和传输数据,也用于创建 web 应用。
5. 什么是AJAX?
答:AJAX 是 Asynchronous JavaScript and XML 的缩写,它是一种用于创建异步 Web 应用的技术,可以在不重新加载整个页面的情况下更新网页的部分内容。
6. 什么是JSON?
答:JSON 是 JavaScript 对象表示法的缩写,是一种轻量级的数据交换格式,用于在应用程序之间进行数据交换和存储。
7. 什么是CDN?
答:CDN 是内容分发网络的缩写,是一种分散式网络技术,用于将静态资源(如 JavaScript 和 CSS 文件)分发到多个服务器上,以提供更快的网页加载速度。
8. 请描述Web存储的概念。
答:Web 存储提供了一种方式,可以在网站上存储数据,并在下次用户访问中访问这些数据。使用 web 存储,可以为用户提供更好的体验和功能,因为它可以更快地加载页面和保存状态信息。
9. 请描述HTML5的新特性。
前端应用场景面试题
前端应用场景面试题
1. 创建一个匿名函数,立即执行,并传入一个参数,将它赋值给变量`x`。
```javascript
var x = (function(param) {
// 匿名函数的代码逻辑
})(param);
```
2. 创建一个闭包函数,用来计算一个数字的平方,并将结果返回。
```javascript
function square(num) {
return function() {
return num * num;
}
}
var squareFn = square(5);
console.log(squareFn()); // 输出25
```
3. 实现一个倒计时功能,使用`setInterval()`定时器函数每秒减少一秒。
```javascript
function countdown(seconds) {
var timer = setInterval(function() {
console.log(seconds);
seconds--;
if (seconds < 0) {
clearInterval(timer);
console.log("倒计时结束");
}
}, 1000);
}
countdown(10);
```
4. 创建一个按钮点击事件监听器,当按钮被点击时,输出"按钮被点击"。
```html
<button id="myButton">点击我</button>
<script>
var button = document.getElementById("myButton");
前端开发面试题整理
1、请阐述position:absolute, fixed, relative,static 三者的功能及区别。
(1)static(静态定位):默认值,没有定位,元素出现在正常流中(忽略top,right,bottom,left,z-index声明)。
(2)relative(相对定位):生成相对定位的元素,相对于其正常位置进行定位,其在文本流中的位置依然存在。
(3)absolute(绝对定位):即完全离开文档流, 相关于position属性非static值的比来父级元素进行偏移。
(4)fixed(固定定位):生成绝对定位的元素,相对于浏览器可视窗口窗口进行定位。
2、css的选择符有哪些?
通配选择符(*)、类选择符(.class)、ID选择符(#id)属性选择符(input[name='button'])、包含选择符(div p)、子对象选择符(div>p)
3、如何使一个div水平垂直居中position:
position:absolute;left:50%;top:50%;margin-left:-100px;margin-top:-100px;
4、如何响应鼠标的点击/双击事件
5、如何在JQuery中更改指定元素的高度属性
$("p").height(100);
6、输入n个整数,对这些数字进行排序
function sort(e){
for(var i=0;i<e.length-1;i++){
for(var j=0;j<e.length-i-1;j++){
if(e[j]>e[j+1]){
高级前端开发面试题
高级前端开发面试题
1. 什么是前端开发?
前端开发是指通过使用HTML、CSS、JavaScript等技术,构建并定制网站或Web应用程序的过程。前端开发人员负责将设计和用户需求转化为可视化和可操作的界面,并确保其在各种设备和浏览器上的良好表现和用户体验。
2. 前端开发的技能要求有哪些?
作为一名高级前端开发人员,需要具备以下技能:
(1) 掌握HTML、CSS和JavaScript的核心知识,熟悉各种前端框架和库,如React、Angular、Vue等;
(2) 具备跨浏览器和响应式设计的能力,能够确保网站在不同浏览器和设备上的兼容性;
(3) 熟悉版本控制工具,如Git,能够协作开发和解决代码冲突;
(4) 熟悉性能优化和调试方法,能够提高网站的加载速度和用户体验;
(5) 具备良好的团队合作和沟通能力,能够与设计师、后端开发人员等紧密合作,完成项目的开发和交付。
3. 如何优化前端性能?
为了提高网站的性能和用户体验,可以采取以下措施:
(1) 压缩和合并CSS和JavaScript文件,减少网络请求次数;
(2) 使用浏览器缓存和CDN加速,减少请求的资源大小和加载时间;
(3) 避免页面重排和重绘,通过优化CSS和JavaScript代码来提高页面渲染速度;
(4) 异步加载资源和延迟加载图片,提高页面的加载速度;
(5) 对图片进行优化,如使用适当的压缩算法和格式,减小图片文
件的大小。
4. 请解释什么是跨域问题,如何解决跨域?
跨域问题是指在浏览器端,当当前网页的域名、端口或协议与请求
资源的域名、端口或协议不一致时,浏览器会以安全策略限制页面对
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JQ 常见选择器?
,号选择器,分组选择器。空格,祖父选择器。>大于号,父子选择器。+号选择器,紧接下一个兄弟选择器。~号,元素之后所有的 siblings 元素。
:first,:last,:not,:first-child,:last-child,:animated.:checked jQuery 插件实现方式,分别介绍?
jQuery.fn.extend 封装直接在$下面的方法,就是根下面,
扩展 jQuery 元素集来提供新的方法(通常用来制作插件)。
$.extend 用来在 jQuery 命名空间上增加新函数。用一个或多个其他对象来扩展一个对象,返回被扩展的对象
批量的方法用 fn,静态的用$.extend(),不建议用扩展到根下面。
bind 和live 的区别?
live 方法其实是 bind 方法的变种,其基本功能就同 bind 方法的功能是一样的,都是为一个元素绑定某个事件,但是 bind 方法只能给当前存在的元素绑定事件,对于事后采用 JS 等方式新生成的元素无效,而 live 方法则正好弥补了 bind 方法的这个缺陷,它可以对后生成的元素也可以绑定相应的事件.
js 和jq 如何转换?
jQuery 对象是通过 jQuery 包装 DOM 对象后产生的对象。jQuery 对象是 jQuery 独有的,其可以使用 jQuery 里的方法,但是不能使用 DOM 的方法;例如:$("#img").attr("src","test.jpg"); 这里的 $("#img")就是 jQuery 对象。
DOM 对象就是 Javascript 固有的一些对象操作。DOM 对象能使用 Javascript 固有的方法,但是不能使用 jQuery 里的方法。例如:
document.getElementById("img").src = “test.jpg";这里的
document.getElementById("img") 就是 DOM 对象。
$("#img").attr("src","test.jpg"); 和 document.getElementById("img").src = "test.jpg"; 是等价的,是正确的,但是 $("#img").src = "test.jpg" ;或者document.getElementById("img").attr("src","test.jpg"); 都是错误的。
DOM 对象转成jQuery 对象
对于已经是一个 DOM 对象,只需要用 $() 把 DOM 对象包装起来,就可以获得一个
jQuery 对象了,$(DOM 对象)
如:var v = document.getElementById("v"); //DOM 对象
var $v = $(v); //jQuery 对象
转换后,就可以任意使用 jQuery 的方法。
jQuery 对象转成DOM 对象
两种转换方式讲一个 jQuery 对象转换成 DOM 对象: [index] 和 .get(index);
(1) jQuery 对象是一个数据对象,可以通过 [index] 的方法,来得到相应的 DOM 对象。
如: var $v = $("#v"); //jQuery 对象
var v = $v[0]; //DOM 对象
alert(v.checked); //检测这个 checkbox 是否被选中
(2) jQuery 本身提供,通过.get(index) 方法得到相应的 DOM 对象
如:var $v = $("#v"); //jQuery 对象
var v = $v.get(0); //DOM 对象 ( $v.get()[0] 也可以 )
alert(v.checked); //检测这个 checkbox 是否被选中
通过以上方法,可以任意的相互转换 jQuery 对象和 DOM 对象,需要再强调的是:DOM 对象才能使用 DOM 中的方法,jQuery 对象是不可以使用DOM中的方法
给出一个数组如何去掉重复的项?
实现一个把数组里面的重复元素去除的方法:
主要的是 Array 的 prototype 的方法。
var arr=[1,3,5,3,6,9,1,2,2]
var arr=['a','b','a','c','c','ab','bc']
function removeRepeat(arr){
var i,tmpArr=[];
for(i in arr){
if(tmpArr.join(',').indexOf(arr[i])==-1){
tmpArr.push(arr[i]);
}
}
return tmpArr;
}
var r=(arremoveRepeatr);
console.log(r);
二.方法:
Array.prototype.unique=function(){
var i,tmpArr=[];
for(i in this){
if(typeof this[i]!='function'){
if(tmpArr.join(',').indexOf(this[i])==-1){
tmpArr.push(this[i]);
}
}
}
return tmpArr;
}
var arr=['a','b','a','c','c','ab','bc'];
var r=arr.unique();
console.log(r);
js 如何实现面向对象?
var name = 'Chen Hao';
var email = 'haoel(@)';
var website = '';
var chenhao = {
name : 'Chen Hao',
email : 'haoel(@)',
website : ''
};
//以成员的方式 ; chenhao.email; chenhao.website;
//以 hash map 的方式 chenhao["name"]; chenhao["email"];
chenhao["website"];
//我们可以看到,其用 function 来做 class。
var Person = function(name, email, website){
= name; this.email = email; this.website = website;
this.sayHello = function(){
var hello = "Hello, I'm "+ + ", \n" + "my email is: " + this.email + ", \n" + "my website is: " + this.website;
alert(hello);
};
};