Blog Logo

JavaScript基础

写于2015-09-15 15:07 阅读耗时7分钟 阅读量


作为web前端开发人员来说,等级的高低取决于对JavaScript的理解和使用。当然Html、CSS也是很重要的,在后期的文章里会陆陆续续写到。在接下来的几篇中,我把JavaScript分为以下几部分讲解:

  • JavaScript基础
  • JavaScript高级
  • JavaScript设计模式
  • JavaScript扩展

1.什么是JavaScript?

我不是很推崇拿着不会的词汇就去百度百科看词汇的定义,因为即使你记住了它的定义,也没有真正理解它里面的含义。 个人认为对于一个新东西或新词汇应该有属于自己的理解。 比如看下百度百科对JavaScript的定义,

JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。

如果对于接触过JavaScript的人来说完全可以理解上面所传达的意思,但是如果对于没有一点编程经验的人来说,它在说什么火星语。 说下我对JavaScript通俗易懂的理解:

1.JavaScript是一门弱类型的语言 (是什么) 2.JavaScript可以在浏览器里执行 (在哪用) 3.JavaScript可以操作Html、CSS (干什么)


2.重要类型

JavaScript数据类型分为:

  • 基本类型
  • 引用类型

判断类型使用typeof,判断一个实例是否属于某种类型使用instanceof

基本类型:

typeof 1 //"number" 数字
typeof "1" //"string" 字符串
typeof true //"boolean" 布尔

引用类型:

typeof Window //"function" 函数
typeof undefined //"undefined" 未定义
typeof null、[]、{} //"object" 对象

3.常用方法

字符串String

var str="Hello World!"
str.substr(0,str.indexOf(' ')) //"Hello" substr截取 indexOf、lastIndexOf索引
str.slice(0,-1) //"Hello World" slice截取
str.concat("你好!") //"Hello World!你好!"  concat添加
str.replace(/\l/g,"L") //"HeLLo WorLd!"    replace替换
str.trim() //"HeLLo WorLd!" trim去掉两边空格
var str="1,2,3,4"
str.split(",") //["1", "2", "3", "4"] splite字符串分割

数组Array

var arr=[1,2,3,4,5]
arr.concat(6) //[1, 2, 3, 4, 5, 6] concat添加
arr.push(6) //6 push从最后一个元素添加
arr.pop() //5 pop从最后一个元素删除
arr.unshift(6) //6 unshift从开头一个元素添加
arr.shift() //1 shift从开头一个元素删除
arr.join(",") //"1,2,3,4,5,6" join数组放入字符串
var arr=[1,5,3,6,7,2,4]
arr.sort() //[1, 2, 3, 4, 5, 6, 7] sort升序
arr.sort().reverse() //[7, 6, 5, 4, 3, 2, 1] reverse颠倒顺序

日期Date

var date=new Date(); //时间2015-09-17 18:39:20:759
date.getFullYear() //2015 返回年份
date.getMonth() //8 返回月份,从0开始,写这篇文章是9月份
date.getDay() //4 返回每周第几天 从0(星期日)开始
date.getDate() //17 返回日份
date.getHours() //18 返回时
date.getMinutes() //39 返回分
date.getSeconds() //20 返回秒
date.getMilliseconds() //759 返回毫秒
date.getTime() //1442486360759 返回1970年1月1日至今的毫秒

日期初始化的5种方法

new Date() //Thu Sep 17 2015 18:39:20 GMT+0800 (中国标准时间)
new Date(1442486360759) //传时间戳
new Date(2015,8,17) //传年月日
new Date(2015,8,17,18,39,20) //传年月日时分秒
new Date(2015,8,17,18,39,20,759) //传年月日时分秒毫秒

数学Math

Math.PI //3.141592653589793 圆周率
Math.abs("-10") //10 绝对值
Math.ceil(4.1) //5 上舍入
Math.floor(4.1) //4 下舍入
Math.round(4.1) //4
Math.round(4.6) //5 四舍五入
Math.pow(2,3) //8 2的3次幂
Math.random() //0~1之间的随机数
Math.sqrt(9) //9的平方根

函数Function

btoa(encodeURIComponent("你好")) //"JUU0JUJEJUEwJUU1JUE1JUJE" btoa 进行base64编码
decodeURIComponent(atob("JUU0JUJEJUEwJUU1JUE1JUJE")) //"你好" 解码base64
escape("你好") //"%u4F60%u597D" 进行16进制的编码
unescape("%u4F60%u597D") //"你好" 解码16进制
encodeURI("你好") //"%E4%BD%A0%E5%A5%BD" 编码成URI
decodeURI("%E4%BD%A0%E5%A5%BD") //"你好" 解码URI
eval("console.log('Hello World!')") //Hello World! 执行js语句
parseInt("10") //10 String类型转成Number类型
parseFloat("10.25") //10.25 String类型转成Number类型

encodeURI对具有特殊含义的ASCII标点符号(即:;/?:@&=+$,#)是不会进行编码的,而encodeURIComponent会进行编码。

JavaScript对象有Array、Boolean、Date、Math、Number、String、RegExp、Events,详情可以去w3school查看 Browser对象有Window、Navigator、Screen、History、Location DOM对象有Document、Element、Attribute、Event


4.window对象

弹出框类:

alert("Hello World!") //弹出浏览器警告框
confirm("Are you like JavaScript?") //弹出浏览器对话框 返回true或false
prompt("What's your hobby?") //弹出浏览器确认框 返回输入的内容

页面类:

window.open() //打开新的空白页
window.close() //关闭当前页面

定时器类:

var getDate=setInterval(function(){console.log(new Date())},1000) //每秒显示时间 执行n次
clearInterval(add) //取消显示时间
var print=setTimeout(function(){console.log('Hold on 5 seconds')},5000);//等5秒显示信息 执行1次
setTimeout(print) //取消显示信息

事件类:

var clickFun=function(){alert('Hello World!')}
window.addEventListener('click',clickFun) //注册点击事件
window.removeEventListener('click',clickFun) //注销点击事件

下面一些东西后续会慢慢写到,现在只是简单介绍下

其他类:

缓存:applicationCache
为动画提供:requestAnimationFrame、cancelAnimationFrame,类似setTimeout
捕获释放的事件:captureEvents、releaseEvents,可以同setCapture、releaseCapture一起使用
控制台输出:console
设备像素比:devicePixelRatio
获取当前元素CSS值:getComputedStyle
获取当前元素的事件:getEventListeners
获得页面中选中信息:getSelection
判断对象是否有给出名称的属性或对象:hasOwnProperty
检查其原型链的对象是否存在于指定对象实例中:isPrototypeOf
加载history列表中的url:window.history属性
当前 URL 的信息:window.location属性
DOM操作:window.document属性
窗口的文档显示区的高度和宽度:innerHeight、innerWidth
nosql本地存储:indexedDB
本地存储:localStorage、sessionStorage
检测无穷数:isFinite
是否是非数字值:isNaN

这篇就讲到这,下章更精彩。。。

Headshot of Maxi Ferreira

怀着敬畏之心,做好每一件事。