龙空技术网

史上最全的web前端面试题汇总及答案JavaScript之二(二)

梦豆PS设计分享 140

前言:

如今你们对“jquery documentready”大约比较注重,我们都想要剖析一些“jquery documentready”的相关内容。那么小编同时在网摘上网罗了一些对于“jquery documentready””的相关资讯,希望兄弟们能喜欢,看官们一起来学习一下吧!

作者:樱桃小丸子儿

链接:

JavaScript

JS的基本数据类型

number,string,boolean,object,undefined

JavaScript中如何检测一个变量是一个String类型?请写出函数实现

function(obj) {  return typeof(obj) == ”string”; } 

JavaScript的DOM是什么意思?

DOM是W3C的对象模型,DOM是中立于平台和语言的接口,它允许程序和脚本动态的访问和更新文档的内容结构和样式。

如何显示/隐藏一个DOM元素

更改元素的css style,设为display: none。此外还可以将visibility设为hidden,透明度设为0,或长、宽设为0。

JavaScript的节点是什么意思?

根据W3C的标准,HTML中文档的所有内容都是节点 ,整个文档是一个文档节点 ,每个html元素都是元素节点, Html元素中的文本是文本节点 ,每个html属性都是属性节点 ,注释是注释节点。

javascript对象的几种创建方式

1、工厂模式

2、构造函数模式

3、原型模式

4、混合构造函数和原型模式

5、动态原型模式

6、寄生构造函数模式

7、稳妥构造函数模式

javascript继承的6种方法

1、原型链继承

2、借用构造函数继承

3、组合继承(原型+借用构造)

4、原型式继承

5、寄生式继承

6、寄生组合式继承

JavaScript继承方式详解

NaN 是什么鬼?typeof 的结果是?如果一个变量的值是 NaN,怎么确定?

NaN 是 'not a number' 的缩写,表示 "不是一个数字",通常会在运算过程中产生:

console.log('abc' / 4); console.log(4 * 'a');

虽然它 "不是一个数字",但是 NaN 的 typeof 结果却是 number:

console.log(typeof (4 * 'a')); // number

NaN 和任何变量都不相等,包括 NaN 自己:

console.log(NaN === NaN); // false

判断一个变量是不是 NaN 可以用 isNaN()

函数,但是这并不是一个完美的函数,有些时候用value !== value似乎更准确,幸运的是,ES6 已经有Number.isNaN() 方法,将比 isNaN()准确的多。

怎样添加、移除、移动、复制、创建和查找节点?

①创建新节点

createDocumentFragment() //创建一个DOM片段

createElement() //创建一个具体的元素

createTextNode() //创建一个文本节点

②添加、移除、替换、插入

appendChild() //添加

removeChild() //移除

replaceChild() //替换

insertBefore() //插入

③查找

getElementsByTagName() //通过标签名称

getElementsByName() //通过元素的Name属性的值

getElementById() //通过元素Id,唯一性

documentload和documentready的区别

页面加载完成有两种事件

①load是当页面所有资源全部加载完成后(包括DOM文档树,css文件,js文件,图片资源等),执行的一个函数

问题:如果图片资源较多,加载时间较长,onload后等待执行的函数需要等待较长时间,所以一些效果可能受到影响

②$(document).ready()是当DOM文档树加载完成后执行一个函数 (不包含图片,css等)所以会比load较快执行。

在原生的jS中不包括ready()这个方法,只有load方法就是onload事件

事件绑定的几种方法?

以button的Click事件为例:

<button id="btn">click me</button>function clickBtn() {alert('click!');}

1、直接在元素上绑定回调函数

<button id="btn" onclick="clickBtn()">click me</button>

2、JS获取DOM元素对象后,对onclick属性赋值,绑定事件: document.getElementById('btn').onclick=clickBtn;

3、JS获取DOM对象后,调用对象的addEventListener函数绑定事件:document.getElementById('btn').addEventListener('click',clickBtn);

事件冒泡?

JavaScript事件冒泡简介及应用

在Javascript中什么是伪数组?如何将伪数组转化为标准数组?

伪数组(类数组):无法直接调用数组方法或期望length属性有什么特殊的行为,但仍可以对真正数组遍历方法来遍历它们。

典型的是函数的argument参数,还有像调用getElementsByTagName,document.childNodes之类的,它们都返回NodeList对象都属于伪数组。

可以使用Array.prototype.slice.call(fakeArray)将数组转化为真正的Array对象。

js将伪数组转换为标准数组的多种方法

常用JS框架都有什么?

前端Js框架汇总

Javascript中callee和caller的作用?

caller是返回一个对函数的引用,该函数调用了当前函数;

callee是返回正在被执行的function函数,也就是所指定的function对象的正文。

数组方法pop() push() unshift() shift()

push()尾部添加 pop()尾部删除 Unshift()头部添加 shift()头部删除

JavaScript中数组对象详解

为什么要用IIFE

简单来说就是为了能模块化,创建私有变量等等,很多类库(比如 jQuery)都用了这样的写法。

详解javascript立即执行函数表达式(IIFE)

严格模式下进行 Javascript 开发有啥好处?

参考阮一峰老师的Javascript 严格模式详解

Javascript 严格模式详解

Node.js的适用场景

高并发、聊天、实时消息推送

描述一下cookies

web前端面试题第五道—简述Cookie,在JS中如何操作Cookie?

事件是?IE与火狐的事件机制有什么区别? 如何阻止冒泡?

①我们在网页中的某个操作(有的操作对应多个事件)。例如:当我们点击一个按钮就会产生一个事件。是可以被 JavaScript 侦测到的行为。

② 事件处理机制:IE是事件冒泡、火狐是 事件捕获;

③ ev.stopPropagation();

如何判断一个对象是否属于某个类

使用instanceof

if(a instanceof Person)

{

alert('yes');

}

Javascript中,有一个函数,执行时对象查找时,永远不会去查找原型,这个函数是?

hasOwnProperty

js延迟加载的方式有哪些?

defer和async、动态创建DOM方式(用得最多)、按需异步载入js

javascript的本地对象,内置对象和宿主对象

本地对象为array obj regexp等可以new实例化

内置对象为gload Math 等不可以实例化的

宿主为浏览器自带的document,window 等

手写数组快速排序

关于快排算法的详细说明,可以参考阮一峰老师的文章快速排序

快速排序(Quicksort)的Javascript实现

“快速排序”的思想很简单,整个排序过程只需要三步:

(1)在数据集之中,选择一个元素作为”基准”(pivot)。

(2)所有小于”基准”的元素,都移到”基准”的左边;所有大于”基准”的元素,都移到”基准”的右边。

(3)对”基准”左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。

统计字符串”aaaabbbccccddfgh”中字母个数或统计最多字母数。

varstr = "aaaabbbccccddfgh"; varobj = {}; for(vari=0;istr.length;i++){  varv = str.charAt(i);  if(obj[v]&obj[v].value == v){  obj[v].count = ++ obj[v].count; }else{  obj[v] = {};  obj[v].count = 1;  obj[v].value = v;  } } for(key inobj){  document.write(obj[key].value +'='+obj[key].count+' ');// a=4 b=3 c=4 d=2 f=1 g=1 h=1 }

写一个function,清除字符串前后的空格。(兼容所有浏览器)

functiontrim(str){  if(str&typeof str === "string"){  returnstr.replace(/(^s*)|(s*)$/g,"");//去除前后空白符  } }

如何制作一个combo选项

combo选项就是可以手动输入值,也可以选择下拉列表值的选项。

思路:

①布局select和input,让input覆盖select,除了select的下拉图标,以方便select选择。

②编写js,为select添加onchange事件,onchange时将input的value置成select选中的值。

这个网上有很多成品,大家可以自己试一下,下边给出一个。

实现一个combo选项

标签: #jquery documentready