一、内部对象
我们以前学过对象的概念,js中一切都是对象,而以前接触的都是一些标准对象,它们的数据类型有(可以用typeof操作符获取对象的类型):
number,string(字符串),boolean(布尔值),object(对象),function(函数),undefined(未定义)。null表示缺少/为空,不是对象。
js中的内部对象:
Date日期对象
var now = new Date();//创建一个当前的Date对象
//当前时间的获取
now.getFullYear();//年
now.getMonth();//月,用0~11代表月
now.getDate();//日
now.getDay();//星期
now.getHours();//时
now.getMinutes();//分
now.getSeconds();//秒
效果:
时间戳:拥有世界规定的标准:从1970年1月1日0时0分0秒至今的毫秒数。
now.getTime();
通过时间戳获取时间:
console.log(new Date(1611980200886))//通过时间戳获得的毫秒数
当前时间:
特殊的时间:
now.toLocaleString()//本地时间
now.toGMTString()//标准时间
JSON对象
JSON是一种轻量级的数据交换格式,早期数据传输用xml,比起它JSON具有更简洁清晰的层次结构,更利于阅读、编写,更利于机器理解、生成,更利于提升网络传输效率。任何JS支持的类型都可以用JSON表示。
格式:对象{},数组[],键值对key:value(在对象的属性中常见)
JSON字符串和JS对象间的转化:
1、对象转化为JSON:JS对象转化为JSON再传输可以提高传输效率。
var user = {
name: "lywl",
age: 19,
sex: 'man'
}
var jsonUser = JSON.stringify(user);
定义对象,返回JSON字符串
2、json字符串转换为对象:参数为json字符串
var obj = JSON.parse('{"name":"lywl","age":19,"sex":"man"}');
//括号内直接放入json,JS中尽量要单双引号相互嵌套,不然容易报错
JSON字符串返回为对象
对比:
JSON是一种数据传输/交换模式,可以用java在后端生成,传输给前端,前端会读取解析,如果在前端单独编写JSON则没有意义。
二、面向对象编程
原型继承:
类:模板;对象:具体实例。可以理解为类是对对象的抽象,对象是类的具体实例。
例如:
var Student={//定义一个学生类
name:"xs",
age:19,
run:function(){
console.log(this.name+"run");
}
}
var lywl={//定义一个对象,是Student的实例
name:"lywl",
}
让对象lywl拥有Student的特性:(lywl继承了Student类,lywl的原型为Student)
所有属性最终都指向object
class继承:
class Fu {
constructor(name) {//constructor为构造器
this.name = name;//调用自身
}
Fuhello() {
alert('hello')
}
}
//子类继承父类
class Zi extends Fu {
constructor(name,grade) {
super(name);//实现父类的名字
this.grade = grade;//调用自身
}
Zihello() {
alert('hello world')
}//子类既能执行Zihello,也能执行Fuhello
}
lywl是父类的具体实例,具有父类属性功能;lywl2是子类的具体实例,具有子类属性功能,同时继承父类,原型_proto_先指向父类,父类又继承了子类,所以lywl2既是子类又是父类,结果将不断向下指向循环,最终就回到object。此处涉及到原型链相关知识,参考Ping开源的博客