JavaScrip学习笔记
一、JS两种构造函数的方法
var arr=function (){
console.log(8)
}
function arr(){
console.log(7);
}
arr()
最后得到的结果为8
为什么呢?
上面的代码可以改写成如下
var arr;
function arr(){
console.log(7);
}
arr=function (){
console.log(8)
}
arr()
定义arr在最开头,而后则是输出7的函数,最后才是输出8的函数
二、对象的定义
// 第一种
var student1=new Object();
// 第二种
var student2={};
student1.name="Bob"
student2.name="Alice"
两种构造对象的模式
// 工厂模式
function Student(name,sex,age){
// 区别一
var student=new Object();
student.name=name;
student.sex=sex;
student.age=age;
return student;
}
// 区别二
var s1=Student("Bob","男","12");
var s2=Student("Alice","女","13");
console.log(s1);
console.log(s2);
// 构造函数模式
function Teacher(name,sex,age){
// 这里不用创建新的空间
this.name=name;
this.sex=sex;
this.age=age;
this.teach=function(){
console.log("指导学习")
}
}
// this指向新构造出来的对象
var t1=new Teacher("Bob","男","14")
t1.teach()
var teacher=function(){
console.log(111111);
}
function Teacher(name,age){
this.name = name;
this.age = age;
this.teach = teacher
}
var t1=new Teacher("Bob","14");
t1.teach()
三、原型与原型链
原型的定义
function teacher(name,age){
this.name=name;
this.age=age;
}
//把方法放在一个对象中
var object={
teach:function(){
console.log("指导学习2")
},
sayEnglist:function(){
console.log("讲英语")
}
}
//object赋值给该对象的原型
teacher.prototype = object;
var t1=new teacher("章陆斌","14")
console.log(t1.teach())
for in 循环遍历对象
循环的是key
var star = {
name:"周杰伦",
work:"歌手",
like:"奶茶"
}
for (var key in star)
{
console.log(key + ": " + star[key])
}
for of 循环遍历
操作的本质是把数组的value值一个个取出来
循环的value
var star = {
name:"周杰伦",
work:"歌手",
like:"奶茶"
}
//
for(var key of Object.keys(star))
{
console.log(key+": "+star[key])
}
四、内置对象
Math常用内置对象
console.log(Math.PI)
// 向下取整
console.log(Math.floor(3.5));
// 向上取整
Math.ceil(3.5)
// 四舍五入
Math.round(3.5)
Math.abs(3.5)
Math.max(3,5)
Math.min(3,5)
// 0<=X<1的随机数
Math.random()
console.log(Math.round(Math.random()*10000))
五、时间
var now =new Date();
console.log(now.toString())
console.log(now.getFullYear())
console.log(now.getMonth()+1)
console.log(now.getDate())
console.log(now.getDay())
console.log(now.getHours())
时间戳 1970,1,1,0,0 -->0
用时间戳的原理来实现一个开始时间到结束时间计算时分秒的函数
function computer(start,end){
// 到1970,1,1,0,0的毫秒数
var nowMini=start.getTime();
var tMini=end.getTime();
var throughtTime=tMini-nowMini;
console.log(throughtTime)
//一个小时有多少毫秒
var oneHour=1*60*60*1000;
var hour=Math.floor(throughtTime / oneHour)
//一分钟有多少毫秒
var oneSeconde=1*60*1000;
//求余就是剩下的时间
var seconde=Math.floor((throughtTime % oneHour)/oneSeconde)
//一秒钟有多少毫秒
var oneMinute=1000;
var minute=(throughtTime % oneSeconde)/oneMinute
console.log("hour: "+hour+" seconde: "+seconde+" minute: "+minute)
}
var now=new Date();
var t=new Date();
t.setHours(10,0,0,0);
t.setDate(17)
console.log(now.toString());
console.log(t.toString());
computer(now,t);
六、数组对象
判断是否是数组
(1)instanceof方法 判断
var arr=[1,"123",123123]
var obj={}
console.log(arr instanceof Array)
console.log(obj instanceof Object)
console.log(obj instanceof Array)
(2)Array.isArray()方法
var arr=[1,"123",123123]
var obj={}
console.log(Array.isArray(arr))
对数组进行操作
var arr=[1,"123",123123]
// 在最后面删除
arr.push(111111);
// 在最前面加入
arr.unshift("123")
// 删除最后的元素
arr.pop()
// 删除最前面的元素
arr.shift()
// 要插入的索引值,删除的个数,插入的值
arr.splice(2,0,"zlb")
console.log(arr)
// 要删除的索引值,从这个索引值之后删除的个数
arr.splice(2,2)
数组的排序
var arr=[1244,123,12123,6,7,8,9,12]
// a-b正序 b-a逆序
arr.sort(function(a,b){
return b-a;
})
数组对象的排序
var a=[
{name:"小明",score:30},
{name:"小红",score:40},
{name:"小蓝",score:10},
]
// 顺序排序
a.sort(function(a,b){
return a.score-b.score
})
// 逆序排序
a.sort(function(a,b){
return b.score-a.score
})
console.log(a)
本文深入探讨了JavaScript中的构造函数,包括两种定义方法及其执行逻辑。接着讲解了对象的定义及工厂和构造函数模式。接着,详细阐述了原型与原型链的概念,并通过实例展示了如何使用。此外,还介绍了JavaScript内置对象Math的常用方法以及时间处理。文章还涉及了数组对象的操作,如判断是否为数组、数组排序等。最后,简要讨论了DOM对象的基本概念。
1586

被折叠的 条评论
为什么被折叠?



