祖师爷——Brendan Eich
javascript诞生于1995年。
Brendan Eich被指定为这种”简化版Java语言”的设计师。
但是,他对Java一点兴趣也没有。为了应付公司安排的任务,他只用10天时间就把Javascript设计出来了。
由于设计时间太短,语言的一些细节考虑得不够严谨,导致后来很长一段时间,Javascript写出来的程序混乱不堪。如果Brendan Eich预见到,未来这种语言会成为互联网第一大语言,全世界有几百万学习者,他会不会多花一点时间呢?
总的来说,他的设计思路是这样的:
(1)借鉴C语言的基本语法;
(2)借鉴Java语言的数据类型和内存管理;
(3)借鉴Scheme语言,将函数提升到”第一等公民”(first class)的地位;
(4)借鉴Self语言,使用基于原型(prototype)的继承机制。
所以,Javascript语言实际上是两种语言风格的混合产物—-(简化的)函数式编程+(简化的)面向对象编程。 这是由Brendan Eich(函数式编程)与网景公司(面向对象编程)共同决定的。
如果不是公司的决策,Brendan Eich绝不可能把Java作为Javascript设计的原型。作为设计者,他一点也不喜欢自己的这个作品:
“与其说我爱Javascript,不如说我恨它。它是C语言和Self语言一夜情的产物。十八世纪英国文学家约翰逊博士说得好:’它的优秀之 处并非原创,它的原创之处并不优秀。
1、怎么让js延迟执行?
6个属性,其中defer:可选。表示脚本可以延迟到文档完全被解析和显示之后再执行,仅适用于外部脚本。
2、这种结构01.js会不会执行?(会)标签内部js代码会不会执行?(不会)
<script src="01.js">...</script>
3、在局部作用域中,变量声明省略var关键词会有哪些影响?
在局部作用域中,变量声明省略var关键词相当于声明了一个全局变量。但不推荐使用,因为不利于变量维护,导致不必要的混乱。在严格模式下会报错(ReferenceError)。
4、ECMAScript中哪6种数据类型?
5种简单数据类型(也叫基本类型):Undifined、Null、String、Number、Boolean
1种复杂数据类型:Object
(从技术上讲,函数在ECMAScript中是对象,不是一种数据类型。)
5、对象的每个实例都有7个属性和方法,其中constructor和prototype什么作用?
constructor:保存着创建当前对象的函数。即指向其构造函数。
prototype:指向对象实例的原型对象
实例属性定义在构造函数中,而所有实例共享的属性和方法定义在原型对象中。
6、什么是块级作用域(私有作用域)?匿名函数有哪几种形式?匿名函数怎么模拟块级作用域?
7、函数声明和函数表达式的区别?
javascript引擎会把函数声明提升到顶部。
8、每个函数在被调用时都会自动取得2个特殊变量(属性)?作用?
arguments 和 this。其中arguments.callee指向包含arguments的对象,常用来解耦。
9、每个函数都包含哪两个2个非继承而来的方法?区别?
apply() 和 call()。
相同点:这两个方法的用途都是在特定的作用域中调用函数,即改变this的指向。
不同点:apply(this , [arguments])、call(【this】 , arguments[0],arguments[1]…)
//参数是数组 //参数必须逐个列举出来
它们更重要的作用是扩充函数的作用域。
10、bind()
11、eval()
12、构造函数?
构造函数和普通函数惟一区别就是,构造函数可以通过new操作符来调用。
13、什么是闭包?怎么创建闭包?作用?缺点?
闭包是 指能够访问另一个函数作用域中的变量的 函数。
闭包的特点是,闭包只能读取外部函数中的任何变量的最后一个值。因为闭包保存的是整个变量对象,而不是某个特定的变量。
14、Bom常用操作?
location.href=”url”;
history.go(-1)
15、Dom常用操作?
16、阻止浏览器默认行为?阻止事件冒泡?
event.preventDefault(); IE中为event.cancelBubble
event.stopPropagation();
17、ready、load和DOMContentLoaded事件?
load 事件会在页面中的一切(包括图片,音频、视频,css文件,js文件…)都加载完毕才触发。
DOMContentLoaded 事件在形成完整DOM树后就会触发,不用理会图片,音频、视频,css文件,js文件…是否下载完毕。
ready 事件并不是浏览器原生事件,而是DOMContentLoaded事件、onreadystatechange事件和doScrollCheck()函数的统称。
18、移动设备的屏幕方向?
19、触摸事件?
20、canvas?
填充和描边
绘制图片:
绘制矩形
拱形和圆
绘制文本
其他:rotate,scale,transform,渐变,阴影……
21、drag 和 dataTransfer?
21、XMLHttpRequest对象?get() 和 post() ?(p575)
21、什么是跨域 ?怎么实现跨域?