快捷目录
-
- 介绍JavaScript的基本数据类型
- 说说写JavaScript的基本规范?
- jQuery使用建议
- Ajax使用
- JavaScript有几种类型的值?你能画一下他们的内存图吗?
- 栈和堆的区别?
- Javascript实现继承的几种方式
- Javascript创建对象的几种方式?
- Javascript作用链域作用
- 谈谈this的理解
- eval是做什么的?
- 什么是window对象? 什么是document对象?
- null,undefined的区别?
- ["1", "2", "3"].map(parseInt) 答案是多少?
- 关于事件,IE与火狐的事件机制有什么区别?如何阻止冒泡?
- 什么是闭包(closure),为什么要用它?
- javascript 代码中的"use strict";是什么意思 ? 使用它区别是什么?
- 如何判断一个对象是否属于某个类?
- Javascript中,执行时对象查找时,永远不会去查找原型的函数?
- 对JSON的了解?
- JS延迟加载的方式有哪些?
- 同步和异步的区别?
- 什么是跨域问题 ,如何解决跨域问题?
- 页面编码和被请求的资源编码如果不一致如何处理?
- 模块化开发怎么做?
- AMD(Modules/Asynchronous-Definition)、CMD(Common Module Definition)规范区别?
- requireJS的核心原理是什么?(如何动态加载的?如何避免多次加载的?如何缓存的?)
- call和applycall
- documen.write和 innerHTML的区别
- 回流与重绘
- DOM操作
- 数组对象有哪些原生方法,列举一下
- 哪些操作会造成内存泄漏
- 响应事件
- flash和js通过什么类如何交互?
- Flash与Ajax各自的优缺点?
- 有效的javascript变量定义规则
- XML与JSON的区别?
- HTML与XML的区别?
- 渐进增强与优雅降级
- Web Worker和Web Socket?
- JS垃圾回收机制?
- web应用从服务器主动推送data到客户端的方式?
- 如何删除一个cookie?
- attribute与property的区别?
- Ajax请求的页面历史记录状态问题?
介绍JavaScript的基本数据类型
Number、String 、Boolean 、Null、Undefined。
Object 是 JavaScript 中所有对象的父对象;
数据封装类对象:Object、Array、Boolean、Number 和 String;
其他对象:Function、Arguments、Math、Date、RegExp、Error;
新类型:Symbol
说说写JavaScript的基本规范?
- 不要在同一行声明多个变量;
- 使用 ===或!==来比较true/false或者数值;
- switch必须带有default分支;
- 函数应该有返回值;
- for if else 必须使用大括号;
- 语句结束加分号;
- 命名要有意义,使用驼峰命名法。
jQuery使用建议
尽量减少对dom元素的访问和操作;
尽量避免给dom元素绑定多个相同类型的事件处理函数,可以将多个相同类型事件处理函数合并到一个处理函数,通过数据状态来处理分支;
尽量避免使用toggle事件。
Ajax使用
全称 :Asynchronous Javascript And XML
所谓异步,就是向服务器发送请求的时候,我们不必等待结果,而是可以同时做其他的事情,等到有了结果它自己会根据设定进行后续操作,与此同时,页面是不会发生整页刷新的,提高了用户体验。
创建Ajax的过程:
创建XMLHttpRequest对象(异步调用对象);
var xhr = new XMLHttpRequest();
创建新的Http请求(方法、URL、是否异步);
xhr.open("get","example.php",false);
设置响应HTTP请求状态变化的函数。onreadystatechange事件中readyState属性等于4。响应的HTTP状态为200(OK)或者304(Not Modified);
发送http请求;
xhr.send(data);
获取异步调用返回的数据。
注意:
页面初次加载时,尽量在web服务器一次性输出所有相关的数据,只在页面加载完成之后,用户进行操作时采用ajax进行交互。
同步ajax在IE上会产生页面假死的问题。所以建议采用异步ajax。
尽量减少ajax请求次数
ajax安全问题,对于敏感数据在服务器端处理,避免在客户端处理过滤。对于关键业务逻辑代码也必须放在服务器端处理。
JavaScript有几种类型的值?你能画一下他们的内存图吗?
基本数据类型存储在栈中,引用数据类型(对象)存储在堆中,指针放在栈中。
两种类型的区别是:存储位置不同;原始数据类型直接存储在栈中的简单数据段,占据空间小、大小固定,属于被频繁使用数据,所以放入栈中存储;引用数据类型存储在堆中的对象,占据空间大、大小不固定,如果存储在栈中,将会影响程序运行的性能.
引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。当解释器寻找引用值时,会首先检索其在栈中的地址,取得地址后从堆中获得实体。
栈和堆的区别?
栈(stack):由编译器自动分配释放,存放函数的参数值,局部变量等;
堆(heap):一般由程序员分配释放,若程序员不释放,程序结束时可能由操作系统释放。
Javascript实现继承的几种方式
JavaScript实现继承的3种方法:
借用构造函数法(又叫经典继承)
function SuperType(name) {
this.name = name;
this.sayName = function() {
window.alert(this.name);
};
}
function SubType(name, age) {
SuperType.call(this, name); //在这里借用了父类的构造函数
this.age = age;
}
对象冒充
function SuperType(name) {
this.name = name;
this.sayName = function() {
window.alert(this.name);
};
}
function SubType(name, age) {
this.supertype = SuperType; //在这里使用了对象冒充
this.supertype(name);
this.age = age;
}
组合继承(最常用)
function SuperType(name) {
this.name = name;
}
SuperType.prototype = {
sayName: function() {
window.alert(this.