闭包!作用域,ajax,问的都是基础,很细的。
问原型链一直往上访问最后会是什么。
答就是prototype的问题,最后要么是一个object,要么就是undefined。
问实现一个闭包
答简单地用匿名函数实现了一个
问实现一个长度和高度相等的div
答应该使用before元素实现吧
问的比较细!比较专业!
算法居多,不太容易。
总结了清除浮动、居中的方法flex布局
mvc
ss设置透明度,首先需要知道的是在浏览器中的不同使用,一般在ie中用的是filter:alpha(opacity=0);这个属性来设置div或者是块级元素的透明度,而在firefox中,一般就是直接使用opacity:0,对于兼容的,一般的做法就是在书写css样式的将2个都写上就行,就能实现兼容,具体看代码:
<html>
<head>
#div1{
width:200px;
height:600px;
margin:0 auto;
opacity:0;
filter:alpha(opacity=0); //0 代表的是隐藏,就是透明度最低。
}
</head>
<body>
<div id='div1'>
<p>测试文字。</p>
</div>
</body>
</html>
主要是为了减轻服务器的压力,从而网站上的图片调用图片的服务器,css调用css的服务器,大的网站架构都是这样子做的
实现div的水平居中和垂直居中
居中
1、幻灯效果页面。。。
<!document html>
<html>
<head>
<style>
#cont{
position:relative;
height:100px;
}
img{
height:100px;
width:100px;
z-index:1;
}
img:firstChild,
img:target{ //:target 选择器可用于选取当前活动的目标元素
z-index:2;
}
</style>
</head>
<body>
<div id=cont>
<img id="img1" src="tfs1.jpg">
<img id="img2" src="tfs2.jpg">
</div>
<div>
<a src="tfs1.jpg">one</a>
<a src="tfs2.jpg">two</a>
</div>
</body>
</html>
2、css hack
3、css预处理
可以在 CSS 中使用变量、简单的逻辑程序、函数(如右侧代码编辑器中就使用了变量$color)等等在编程语言中的一些基本特性,可以让你的 CSS 更加简洁、适应性更强、可读性更佳,更易于代码的维护等诸多好处。
优点:
- 结构清晰, 便于扩展
- 可以方便屏幕浏览器私有语法差异
- 可以轻松实现多重继承
- 完全兼容css代码
5、
sessionStorage和页面js数据对象的区别
- 页面中一般的 js 对象或数据的生存期是仅在当前页面有效,因此刷新页面或转到另一页面这样的重新加载页面的情况,数据就不存在了。
- 而sessionStorage 只要同源的同窗口(或tab)中,刷新页面或进入同源的不同页面,数据始终存在。也就是说只要这个浏览器窗口没有关闭,加载新页面或重新加载,数据仍然存在。
canvas和svg的区别?
答:
- svg:
- SVG是一种使用XML描述2D图形的语言
- SVG基于XML, 这意味着SVG DOM中的每个元素都是可用的. 所以可以为每个元素附加JavaScript事件处理器
- 在SVG中, 每个被绘制的图像均被视为对象. 如果SVG对象的属性发生变化, 那么浏览器能够自动重现图像
- Canvas
- Canvas通过js来绘制2D图形
- Canvas是逐像素进行渲染的
- 在Canvas中, 一旦图形被绘制完成, 它就不会继续得到浏览器的关注. 如果其位置发生变化, 那么整个场景也需要重新绘制, 包括任何或许已被图形覆盖的对象.
- 区别
- Canvas支持分辨率, SVG不支持
- Canvas不支持事件处理器, SVG支持
- Canvas只有弱的文本渲染能力, 而SVG最适合带有大型渲染区域的应用程序(比如谷歌地图)
- Canvas能够以.png或.jpg格式保存结果图像
- SVG的复杂度过高的话会减慢渲染速度(任何过度使用DOM的应用都不快)
- Canvas最适合图像密集型的游戏, 其中的许多对象会被频繁重绘. 而SVG不适合游戏应用
- Canvas是基于位图的图像,它不能够改变大小, 只能缩放显示; SVG是基于矢量的, 所以它能够很好地处理图形大小的改变
- Canvas提供的功能更原始, 适合像素处理, 动态渲染和大数据量绘制; SVG功能更完善, 适合静态图片显示, 高保真文档查看和打印的应用场景
- 绘制Canvas对象后, 不能使用脚本和CSS对它进行修改; 而SVG对象是文档对象模型的一部分, 所以可以随时使用脚本和CSS修改它们
- 7、 解释下事件代理
- 事件委托利用了事件冒泡, 只指定一个事件处理程序, 就可以管理某一类型的所有事件
- 8、
. 解释下js中this是怎么工作的?
this 在 JavaScript 中主要由以下五种使用场景。
- 作为函数调用,this 绑定全局对象,浏览器环境全局对象为 window 。
- 内部函数内部函数的 this 也绑定全局对象,应该绑定到其外层函数对应的对象上,这是 JavaScript的缺陷,用that替换。
- 作为构造函数使用,this 绑定到新创建的对象。
- 作为对象方法使用,this 绑定到该对象。
- 使用apply或call调用 this 将会被显式设置为函数调用的第一个参数。
. AMD vs. CommonJS?
什么是闭包? 闭包有什么作用?
答:
- 闭包是指有权访问另一个函数作用域中的变量的函数. 创建闭包常见方式,就是在一个函数内部创建另一个函数.
- 作用:
- 匿名自执行函数 (function (){ ... })(); 创建了一个匿名的函数,并立即执行它,由于外部无法引用它内部的变量,因此在执行完后很快就会被释放,关键是这种机制不会污染全局对象。
- 缓存, 可保留函数内部的值
- 实现封装
- 实现模板
伪数组和真数组
/*
* 什么是伪数组:
* 1、伪数组是一个对象
* 2、这个对象必须要有length属性
* 3、如果这个对象的length不为0,那么必须要有按照下标存储的数据
* */
// 不是伪数组
var obj = {};
var obj2 = { length: 3 };
// 是伪数组
var obj3 = { length: 0 };
var obj4 = { 0: '888', length: 1 };
var obj5 = { 99: 'abc', length: 100 }
/*
* 如何判断数据是不是伪数组:
* 1、不是对象直接干掉
* 2、是对象,没有length属性也干掉
* 3、有length,值必须是number类型
* 4、length值是number类型,并且值不为0,这个对象还得按照下标存储数据
* */
/*
* 如何判断数据是不是真数组:
* 1、数据 instanceof Array
* 2、Object.prototype.toString.call( 数据 ) === '[object Array]'
* */
JavaScript没有真正的数组,因此typeof运算符不能辨别数组和对象。伪数组在JavaScript中有很高的易用性,程序员不用给它设置维度,而且永远不用担心产生越界错误,但JavaScript数组的性能相比真正的数组可能更糟糕。要判断一个值是否为数组,必须使用constructor属性,例如:
if(value && typeof value === 'object' && value.constructor === Array) {
}
arguments不是一个数组,它是一个带有length成员属性的对象,很多时候会把它理解为一个伪数组。使用上面的检测方法会将arguments识别为一个数组,有时候这是希望得到的结果,尽管arguments不包含任何数组的方法。
13、JavaScript 中 undefined 与 undeclared 之间的区别是什么?
点击一个ul的五个li元素,分别弹出他们的序号,怎么做?
设置属性:
1
2
3
4
|
var
oLi = document.getElementsByTagName(
'li'
);
for
(
var
i=0; i<oLi.length; i++){
oLi[i].setAttribute(
"onclick"
,
"alert("
+i+
");"
);
}
|
js实现对象的深克隆
function clone(obj){ if(typeof(obj)== 'object'){ var result = obj instanceof Array ? [] : {}; for(var i in obj){ var attr = obj[i]; result[i] = arguments.callee(attr); } return result; } else { return obj; } };
js中怎么实现块级作用域?
let
: 语法上非常类似于var
, 但定义的变量只存在于当前的语句块中。使用let
代替var
可以更容易的定义一个只在某个语句块中存在的局部变量,而不用担心它和函数体中其他部分的同名变量有冲突.在let
语句内部用var
声明的变量和在let
语句外部用var
声明的变量没什么差别,它们都拥有函数作用域,而不是块级作用域.- 17、
如果在同一个元素上绑定了两个click事件, 一个在捕获阶段执行, 一个在冒泡阶段执行. 那么当触发click条件时, 会执行几个事件? 执行顺序是什么?
- 点击打开链接