转:http://www.csser.com/board/50359afb73df724356000537#/post/50359e4e73df7243560005b0
1:javascript有几种数据类型
在Javascript中只有五种简单类型,分别为null,undefined,boolean,String和Number。一种复杂类型:object。代码类型只有一种形式就是function。
2:如何判断javascript的类型
可以使用typeof函数
例如
var name = 'mdemo'; console.log(typeof name); // 'string'
还可以用instanceof
3:javascript的作用域
javascript和其他语言不同,不存在花括号之间的块级作用域,而是用函数来进行作用域的划分。
4:javascript中数组的常用方法
concat--将两个数组连接起来
splice--可以用来删除、添加、替换
5:javascript中数组删除某一元素如何实现
找到要删除的元素的索引,然后使用splice(index,1)删除
6:函数中的arguments是数组吗
不是数组,typeof 可以看到是 object类型,而且arguments还有callee方法,所以不会是数组的。
7:说一下函数执行结果
window.name = 'gdemo';
var me = { name = 'mdemo'};
function sayName(){
console.log(this.name);
}
sayName();//gdemo
me.sayName = sayName;
me.sayName();//mdemo
8:javascript中如果体现面向对象的三大特性的
封装:javascript中没有类的概念,一般用functions去模拟
较好的封装代码事例
function Person (name,sex,age){
this.name = name;
this.sex = sex;
this.age = age;
}
Person.prototype = {
sayName : function(){
console.log(this.name)
}
}
这样封装的好处,所有的属性都是在构造函数中进行,每个对象单独一份,在函数中调用通过this获取当前对象的属性,函数只实例化一次。
继承:javascript的继承主要利用prototype
较好的继承方式
function SuperType(name){
this.name = name;
this.colors = ['red','blue','yellow'];
}
function SubType(name ,age){
SuperType.call(this,name);//继承属性
this.age = age;
}
SubType.prototype = new SuperType();继承方法
SubType.prototype.sayAge = function(){
console.log(this.age);
}
多态:主要体现着函数的参数上面
9:什么叫做闭包
会造成内存泄漏的闭包
function alertID(){
var element = document.getElementId("mdemo");
element.onclick = function(){
consol.log(element.id);
}
}
这个就形成了闭包,因为oncolick事件调用的时候,需要调用element变量,这样element永远都不会被回收,导致内存泄漏
修改后的版本
function alertID(){
var element = doucment.getElementId('mdemo);
var id = element.id;
element.onclick = function(){
console.log(id);
}
element = null;
}
10:javascript类型转换
1. Boolean(value):把值转换成Boolean类型;
2. Nnumber(value):把值转换成数字(整型或浮点数);
3. String(value):把值转换成字符串。
4.parseXXX11:domReady和onload的区别
onload是指整个网页所有内容都加载完毕
domready是指网页的dom元素加载完毕即可不用等待元素内容的加载
12:离线存储
manifest:相当于一个缓存的配置文件,配置的内容将会默认加载缓存
如果想更新的话,通过修改manifest文件。主要用于文件的缓存。
localstorage:可以通过cookie 来设置版本号,通过服务器去获得版本号,以此来更新内容。主要用于游戏存档和js css代码存储
13:动态加载如何实习
其实主要考的是
window.onscroll = function(){console.log(document.body.scrollTop);}
滚动条的滚动事件和滚动距离
14:事件冒泡
例如列表中元素的触发事件是一样的,那么多列表不可能一一设置事件,这时可以设置其父元素的事件。
<script type="text/javascript"> function showMsg(obj,e) { alert(obj.id); stopBubble(e) } //阻止事件冒泡函数 function stopBubble(e) { if (e && e.stopPropagation) e.stopPropagation() else window.event.cancelBubble=true } </script>
15:一道 JavaScript 字符串去重的题目
var str = 'aagbdfced';
假设现在有一个字符串变量 str,要求实现一个函数,传入 str,返回字符串中去重相同字符的结果(本例为 agbdfce)。
要求
- 占用内存尽可能的少
- 效率尽可能的高
- 字符串字符的范围为 ASCII 字符