
对象分类:
1.内建对象:ES标准中定义的对象,任何ES的实现中都可以使用
2.宿主对象:JS运行环境提供的对象,如BOM、DOM
3.自定义对象
创建对象:
var obj = new Object();
var obj = {};
var obj = {属性名:属性值,属性名:属性值……}
//obj[n] == obj["nihao"]
删除对象属性:
delete obj.name;
in :检查对象中是否含有该属性
属性名 in 对象——返回true或者false
对象是保存在堆内存中的,变量保存的是对象内存地址,若两个变量保存的是同一个地址,一个变,另一个也变:
var obj = new Object();
obj.name = "111";
var obj2 = obj;
obj2.name = "222";
// obj.name = obj2.name = "222"
var obj3 = new Object();
var obj4 = new Object();
obj3.name = "111";
obj4.name = "111";
// obj3.name != obj4.name
比较的是内存地址 ↑
函数创建函数对象:
var fun = new Function();
var fun = new Function("console.log('...')");
function fun2(){
...
}
var fun3 = function(){
...
};
传递参数过多时,封装到对象中传递
构造函数:调用的时候需要用new
function Person{
this.name = "hello";
}
var per = new Person();
用 instanceof 检查对象是否是类的实例:
对象 instanceof 构造函数
prototype 原型:
创建的每一个函数,解析器都会添加一个属性prototype,这个对应着原型对象
当作为构造函数的时候,会有一个隐藏属性指向该构造函数的原型对象,可以通过__proto__来访问,同一个类的所有实例都可以访问原型对象,当访问一个对象的属性或者方法时,现在自身对象中寻找,如果没有就会去原型对象中寻找
function Myclass(){
}
Myclass.prototype.a = 123;
var mc = new Myclass();
console.log(mc.a);
Myclass.prototype.sayhello = function(){
alert("hello");
};
可以使用hasOwnProperty()检查对象自身是否具有该属性
数组创建数组:
var arr = new Array();
var arr = [];
var arr = new Array(10);//创建长度为10的数组
arr.length获取数组长度,通过arr[arr.length] = ’ '可以增加数组长度
方法:
arr.push("111"):向数组末尾添加一个或多个元素,返回新长度
arr.pop():删除最后一个元素,返回被删除元素
arr.unshift("111"):向开头添加一个或多个元素,返回新长度
arr.shift():删除第一个元素,返回被删除元素
arr.slice(start,end):从开始到结束位置提取元素,并封装到新的数组,前闭后开,负值从后向前计算
arr.splice(start,number):从数组中删除指定元素,第一个是开始位置,第二个是删除数量,返回删除元素,第三个参数及以后可以添加新元素,插入到开始位置上
arr.concat(arr2):连接两个或多个数组,返回新数组,不会影响原数组
arr.join():将数组转换成字符串,可添加参数作为字符串连接符,默认“,”,返回连接后的字符串
arr.reverse():反转数组,修改原数组
arr.sort():数组排序,但对数字排序可能得到错误结果
arr.sort(function(a,b){
if(a>b){
return 1;
}else if(a
arguments
封装实参对象,是一个类数组对象,可以通过索引 *** 作数据,也可以获取长度,所传递的实参都会在arguments中保存,通过arguments.length获取实参长度
Date对象表示一个时间
创建:
var d = new Date();//封装成当前执行时间
var d2 = new Date("12/03/2021 11:10:03");//月 日 年 时 分 秒
d.getDate():获取当前是几号
d.getDaty():返回星期几,0表示周日
d.getMonth():返回几月,0表示一月,以此类推
d.getFullYear():返回年份
d.getTime():返回时间戳
time = Date.now():返回该行代码执行时的时间戳
Math
不是构造函数,属于工具类不用创建对象,如Math.PI 表示圆周率
方法:
Math.abs():绝对值
Math.ceil():向上取整
Math.floor():向下取整
Math.round():四舍五入
Math.random():生成0-1之间的随机数
生成x-y之间的随机数:Math.round(Math.random()*(y-x)+x)
Math.pow(x,y):返回x的y次方
Math.sqrt(x):返回x的开方
String对象
方法:
str.charAt(x):返回字符串中x位置的字符
str.charCodeAt(x):返回字符串中x位置的字符编码
String.fromCharCode(x):根据字符编码获取字符
str.indexOf(x):检查字符串中是否含有x,返回第一次出现的索引,没找到返回-1,可以指定第二个参数规定开始查找位置
str.lastIndexOf():从后往前找
str.slice(start,end):从开始到结束位置提取元素,并封装到新的数组,前闭后开,负值从后向前计算
str.split(","):将字符串拆分成一个数组
正则表达式
用于定义字符串规则,检查字符串是否符合规则
创建正则表达式对象:
var reg = new RegExp("正则表达式","匹配模式");
var 变量 = /正则表达式/匹配模式
正则表达式方法:
用test()检查字符串是否符合规则,符合返回true
var result = reg.test(str);
匹配模式:i:忽略大小写
g:全局模式
eg. var reg = /a|b/;
console.log(reg.test("abcds"));//检查字符串中是否有a或b
[ab] == a|b
[^ab] :除了ab以外
方法:
split():传递正则,任意划分字符串为数组
result = str.split(/[a-z]/);
search():搜索字符串中是否有指定内容,只会查找第一个
result = str.research(/a[bef]d/);
match():根据正则,提取指定表达式,结果封装到数组中
result = str.match(/[a-z]/g);//默认找到第一个停止,用全局匹配模式可以匹配到所有
replace(被替换的内容,新内容):默认替换第一个
result = str.replace(/a/gi,"@@@");
var reg = /a{3}/ 指a正好出现3次,量词只对其前面内容作用
reg = /(ab){3}/ : ababab
量词若是{m,n}形式,指出现m到n次
+:至少一次 reg = /ab+c/
*:0个或多个
?:0个或1个
/^a/:是否以a开头
/a$/:是否以a结尾
/./:表示任意字符
\w:任意字母、数字、_
\W:除了字母、数字、_
\d:任意数字
\D:除了数字
\s:空格
\S:除了空格
\b:单词边界
\B:除了单词边界
去除字符串中开头结尾的空格,用“”代替空格:str = str.replace(/^\s*|\s*$/g,"");
eg.电子邮件
任意字母数字下划线 \w{3,}
.任意字母数字下划线 (\.\w+)*
@ @
任意字母数字 [A-z0-9]+
.任意字母(2-5位)
.任意字母(2-5位) (\.[A-z]{2,5}){1,2}
var emailReg = /^\w{3,}(\.\w+)*@[A-z0-9]+(\.[A-z]{2,5}){1,2}$/;
var email = "abc@abc.com";
console.log(emailReg.test(email));
DOM
节点:文档节点、元素节点、属性节点、文本节点
节点属性:
| nodeName | nodeType | nodeValue | |
|---|---|---|---|
| 文档 | #document | 9 | null |
| 元素 | 标签名 | 1 | null |
| 属性 | 属性名 | 2 | 属性值 |
| 文本 | #text | 3 | 文本内容 |
在下
事件
用户和浏览器的交互
可以在属性中加入js代码,当事件被触发的时候,代码就会执行:
在下
ondblclick:双击
onclick:单击
onmousemove:鼠标移动
可以为按钮的对应事件绑定处理函数来相应:
在下
文档加载
将js代码写到页面的下部是为了在页面加载完毕之后再执行(中)
onload事件会在页面加载完成之后才触发
为window绑定一个onload事件:
在中
window.onload = function(){
alert("hello");
};
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)