JavaScrip学习笔记

本文深入探讨了JavaScript中的构造函数,包括两种定义方法及其执行逻辑。接着讲解了对象的定义及工厂和构造函数模式。接着,详细阐述了原型与原型链的概念,并通过实例展示了如何使用。此外,还介绍了JavaScript内置对象Math的常用方法以及时间处理。文章还涉及了数组对象的操作,如判断是否为数组、数组排序等。最后,简要讨论了DOM对象的基本概念。

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)

六、DOM对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值