1.1 js组成
JavaScript | ||
---|---|---|
ECMAscipt | BOM | DOM |
提供核心语言功能 | 与浏览器交互的方法与接口 | 访问和操作网页内容的方法和接口 |
第二章
2.1 script标签
<srcipt async="async"> 立即下载脚本,不妨碍页面的其他操作,只对外部脚本有效.
<srcipt defer="defer"> 在<html>后面解析,延迟解析,只对外部脚本有效.
前面,利用页面快速加载
js中变量,函数,操作符均区分大小写
标识符的开头由 字母(_或者$)+字母/数字/下划线/$
注释
//单行
/*
多行注释
*/
变量
test=1 全局变量
function fun(){
var test=1 局部变量
}
undefined 声明但未初始化
null 空对象指针 (typeof 返回object) null==undefined(true)
boolean 是否
number 数字 包含所有类型的数字
string 字符
object 对象 var obj=new object() ;
constructor:构造函数
hasOwnProperty(propertyName):检查给定的属性在当前对象中是否存在
isPrototypeOf(object):检查传入的对象是否是传入对象的原型
propertyIsEnumerable(propertyName):检查给定的属性是否能够使用for-in语句来枚举,与hasOwnProperty一样,给定的属性名必须以字符串的形式指定
toLocalString():返回对象的字符串表示,与执行环境的地区对应
toString():返回对象的字符串表示
valueOf():返回对象的字符串、数值或布尔值表示。通常与toString返回相同
操作符
“,” 逗号用于声明多个变量.除此以外逗号可以用于赋值,总是 返回表达式的最后的一项
var num =(0,2,3,41,4) 值 是4 ,返回最后一项
if(condition){
xxx
}else{
yyy
}
var i=0
do{
i++
}
while(i>10)
alert(i)
var i=0
while(i<10){
i++
alert(i)
}
for(var i=0;i++;i<10){
alert(i)
}
函数的参数可以看作成数组,可以通过arguments对象访问,
fun(){
alert(arguments.length,arguments[0])
}
fun(name,12)
返回 2(长度),name(第一个参数元素)
函数没有重载只有后者覆盖前者
基本类型指五大基本数据类型 (不能给它加属性)
引用类型的值保存在内存中的对象
typeof确定是哪种基本类型
instanceof 确定是哪种引用类型
arr instanceof Array arr是Array吗
所有引用类型都是对象,基本类型都不是对象
一对大括号是一个作用域
垃圾回收
1.标记清除(常用)
2.引用技术(不常用)
创建实例
(1) var obj =new Object()
obj.name=”joy”
(2) var obj ={ (常用)
name:”joy”
}
var arr=Array(3) 长度为3
var arr=Array(“jot”) 数组只包含 “jot” ==> var arr=[“jot”]
Array.isArray(arr) ==>布尔
var color=[“red”,”blue”]
color.valueOf() ==>返回数组
color.toString()==>返回字符串
color.join(“,”) ==>转换字符串
push尾部添加
pop尾部删除
shift头部删除
unshift头部添加
reverse数组倒序
sort数组按首字母ascII码升序排列
arr.sort((a,b)=>a-b) 数组升序排列
slice(a,b) a是数组起始位置 b是结尾 ,并不会影响原数组 (切割数组)
如参数有负数则把两个参数加上数组长度再进行判断
splice
删除splice(0,2)删除数组索引从0开始的2个元素
插入splice(2,0,”ab”,”cd”)从数组索引2开始插入两个元素
替换splice(2,1,”ab”,”cd”)从数组索引2开始删除一个元素再添加两个元素
splice(n,m,c)
n起始位置,m删除项数,c替换元素
var arr =[1,2,34,5,2]
arr.indexOf(2) ==>1 返回第一次出现的索引
every()数组元素给定函数(或者判断条件),数组元素都返回true则返回true
filter()数组元素给定函数(或者判断条件) ,将返回true的元素组成数组
forEach()数组元素给定函数,没有返回值
map()数组元素给定函数,返回每次函数调用的结果组成的数组
some()数组元素给定函数,数组元素对函数任意项返回true,则返回true
some和every类似||和&&
以上都不修改数组包含的值
创建日期对象
var time=new Date()
根据特定日期创建日期对象
Date.parse()和 Date.UTC()
var newTime=new Date(”May 20”)可以省略 Date.parse(“May 20”)
var newTime=new Date(Date.UTC(2020,1(月份实际显示要加一),30,15,45,55 ))
参数分别是年月日时分秒
var date =new Date(2020,1,2)
console.log(valueOf(date))返回日期的毫秒数可以用来比较
var reg=/pattern/flags pattern可以是任何简单或复杂的正则表达式, flags表示匹配模式
/g全局匹配
/i不区分大小写
/m多行匹配
^ xx开头
$ xx结尾
[a-zA-Z] 包含字母不区分大小写
[0-9]匹配数字 /\d/
{n,m}至少匹配n次最多m次
判断方法
test()判断是否匹配
exec()返回字符串
match()找到检索指定的值
函数可以作为参数传递
fun call(fun1,param){
return fun1(param)
}
fun1(param){
return param+10
}
call(fun1,10) =>20
函数没有重载,只会覆盖前者
arguments是一个类数组对象,包含函数内的所有参数
this 指针全局函数指向windows
局部函数调用时指向触发事件对象
创建boolean对象.调用boolean构造函数传入true或false
var boo=new Boolean(true)
var num=new Number(1)
num.toFixed(2) 保留两位小数
var str1=new String(“hello”)
console.log(str.charAt(1)) 返回 “e”第二个字符
var str2=”world” str1.concat( ${str2}
)
str1 =>”hello world”
字符串方法
global对象
许多方法时global对象的内置方法
encodeURI()常规格式 <=>decodeURI()
encodeURIComponent() 将部分变成%数字组合<=>decodeURIComponent()
eval() 将参数解析并运行返回结果
Math对象
ceil向上取整
floor向下取整
round四舍五入
random取随机数
[configurable]表示能否操作.delete可以删除属性
[enumerable]能被for-in遍历
[writeable]能否修改
[value]表示对象的属性值.默认是undefined
将一个对象设置不可修改
var son={}
Object.defineProperty(son,”name”,{
writable:false,
value:”jack”
})
son.name=”newName” 不生效
创建一个轻松构建对象的函数
function creator(name,sex,gender){
var obj =new Object()
obj.name=name
obj.sex=sex
obj.gender=gender
obj.say=function(){
alert(this.name)
}
return obj
}
实例化对象
var obj1=creator(“张三”,20,”male”) 无法区分是那个对象的实例,每调用这个构造函数都会创建一个新对象.
函数名首字母要大写
function Person(name,sex,gender){
this.name=name
this.sex=sex
this.gender=gender
this.say=function(){
alert(this.name)
}
}
实例化
var person1=new Person(“李四”,20,”male”)
区别:
工厂模式内部创建了对象,需要定义一个原型函数(creator)
构造函数实例化对象时,需要使用new 关键字,没有返回
js对象都有proto属性指向构造该对象的构造函数原型()
function才有prototype属性,这个属性指向这个函数的
函数的prototype指向该函数的构造函数
函数的_proto_指向 其构造函数的函数原型
Object.prototype.construction===Object 等于本身
// 原型继承
let a ={
x:10,
cal(z){
return this.x+this.y+z
}
}
let b={
y:20,
__proto__:a //继承a的函数
}
console.log(b.cal(10));
function Foo(y) {
this.y=y
}
Foo.prototype.x=100
Foo.prototype.cal=function(z){
return this.x+this.y+z
}
//在构造函数Foo的函数原型上加属性和方法后,以后每次实例化的对象都自带这两个属性和方法
var b=new Foo(20)
// 此时对象b已经有x 和cal函数了
b.cal(10)
// x=100 y=20 x=10
最后更新: 2020年08月24日 14:33