定义:
他的存在是为了改善HTML的交互性。他是在前端完成的交互,与服务器的交互是在后端的交互。
是脚本语言,通过解释运行而非编译运行。
包含:
核心 ECMAScript
文档对象模型 DOM
浏览器对线模型 BOM
ECMAScript
js的开发规范,规定了js的语法,类型,语句关键字操作符等。可以宽泛的定义为平时开发用的语法。
DOM
文档对象模型,Document Obejct Model,本身针对xml文件,后面扩展用于HTML。
DOM对应的整个HTML页面,他将html看做是一个节点的集合,通过对整个页面的节点以及属性的操作完成对页面内容上或者结构上的修改。
对元素的获取,样式的修改,onclick等事件的操作属于DOM的范畴。
BOM
浏览器对线模型,Browser Object Model,它主要是对浏览器的操作,比如窗口的打开关闭,当前页面信息等。
ECMAScript是开发规范,DOM操纵页面,BOW操纵浏览器。
引入到HTML方式
页面内定义或者<script rel="">HTML5规范建议script不加type属性默认text/javascript。
位置
由于页面是从上到下加载的,如果写在head标签中,预先加载js部分,加载完才会显示页面内容,用户看到界面略有延迟。所以一般写在body标签的尾部。
BOM
BOM的核心对象是window,代表浏览器窗口的一个实例。(相对的document代表页面的实例。)
他同时也是ECMAScript中规定的全局对象。因此所有在全局作用域下声明的属性和函数都是window对象的属性和方法。通常定义的方法都是全局的,如定义function validate(); 可以直接调用,也可以用window.validate();调用,如果是一个全局变量var item= '';可以用window.item调用。
window.open()等同于一个动态的a标签。
被打开的窗口可以被操控。如
var childWindow = window.open("www.baidu.com");
alert(1);
childWindow.close();
在点击弹框的确定后新窗口关闭。window.opener指向打开它的窗口。
location对象
是BOM重要对象,包含当前页面信息

history对象
控制页面前进后退
DOM
DOM的核心对象是Document,他是全局对象window的一个子对象。
一些唯一的节点可以直接当做属性访问,如document.body,document,title;
常用的一些属性
document.forms返回页面所有表单。
document.images返回页面所有图片。
所有document操控的html节点称为html元素,常用的元素属性有id,className,style,使用className而不用class是因为class是js的保留字。
这些属性作为节点对象的成员可以直接通过赋值修改。原生js可以用这种直接调用成员查看任意元素的任意属性,使用jquery不行。
document.getElementById("name").className="common-btn";
console.log(document.getElementById('pagerForm').method);
获取节点属性值的三种方式
document.getElementById('strVchrDate').getAttribute('class')
document.getElementById('strVchrDate').className
$('#strVchrDate').attr('class')
H5跨文档消息传递
H5新的API允许在不同域中传递消息。主要是postMessage方法和被通知的window添加handler。
上面是常用api
面向对象
js是一个纯粹的面向对象的语言,他没有类的概念。
函数也是对象,函数可以定义自己的成员和方法。
避免使用eval()
开发中经常使用eval解析json字符串,eval的作用是将参数无差别的转换为js代码,类似html()方法,有一定危险性,如果是解析json字符串还是用专门的方法,浏览器内置的JSON对象和jquery都有对应方法。
避免经常访问DOM
每次访问dom都会遍历一次dom树,常用的节点应该用变量保存。
即时函数
定义后立即执行的函数,格式(function (){})();可以替代init()和ready()方法。
字面量定义对象
类似键值对,值可以是字符串数值也可以是方法function
JSON
javascript object notation,javascript对象表示。和字面量相似,但是所有的值必须用""括起来。
网友评论