一:面向对象
1)面向对象?
面向对象是一种编程思想。
类:具有相同特征的一类事物,js中有很多内置类,我们也可以自己创建类
对象:通过类创建出对象,是具体的,js中有很多的对象,我们也可以自己去创建对象
2)类?
js中提供很多类,如number String, Boolean, Object, Math, Date, ....
通过类创建出对象,使用new运算符来创建,如 var a=new Array()
new一个类就可以创建出一个对象
3)对象?
对象中有很多的静态特征,通常使用变量来描述,此时变量也叫属性。
对象中有很多的动态特征,通常使用函数来描述,引时函数也叫方法(属性)。
对象是属性的无序集合(操作(CRUD)集合)。
4)三条定律,两条链?
定律一:一切都是对象
定律二:所有的对象都是通过类来创建的
定律三:对象是属性的无序集合
两条链:作用域链,原型链
二:对对象的一些操作
1)访问对象中的属性
点语法:对象名.属性名
中括号的形式:对象名【】,需要在中括号内加上引号。
2)添加属性
点语法:对象名.属性名=属性值
中括号的形式:对象名【】=属性值,需要在中括号内加上引号。
注意:如果添加了同名的属性,同名属性将会被覆盖。
设置对象的属性(精细化设置对象的属性)
每一个对象的属性都有一些特征:
configurable:是否可以被删除,默认是true,可以删除
writable: 是否可以修改属性值,默认是ture,可以修改
enumerable:是否可以枚举,默认是ture,可以枚举
value:表示属性值,没有给定属性值,属性值是undefiend
设置对象的属性(精细化设置对象的属性)
Object.defineProperty(对象名,"属性名", {配置表})
Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。
Object是一个类 类.xxx 说明xxx是类上的一个属性(静态属性)
defineProperty是Object这个类上的静态属性 define是定义的意思 Property
注意:在修改属性值和属性特征时:如果这个属性不存在,表示新增了一个属性并精细化设置了
删除属性:直接delete 属性名。注意:加var不能被删除,不加var的可以被删除(winmdow对象)
遍历对象的属性:
用两种方式遍历对象的属性:
for in
for(item in 对象名){console.log(item)}
Object.keys()
console.log(wc[item])
判断一个属性是否属于某一个对象
in和hasOwnProperty的区别:
hasOwnProperty:方法会返回一个布尔值,指示对象自身属性中是否具有指定的属性(也就是,是否有指定的键)。
in判断某一个属性是否属于某一对象
区别:
hasOwnProperty:(只会在自己原型中去找)
in先在自己内部找,如果找不到,会去它的原型对象中找。
三.把函数当做一个类来使用
把函数当做一个类(构造器),目的是创建对象
函数现在有两个角色:普通函数:执行上下文。类:(构造器,构造函数):new
把函数当做一个类和一个普通的对象有什么区别?
new在执行代码时会创建一个对象,然后把this指向这个对象
最后把对象的地址返回
注意:通常类名的首字母会大写
来练习一个,自己写一个试试
function CreatPerson(name,age){
this.name=name;
this.age=age;
this.eat=function(){
console.log("eat...")
}
}
var person=new CreatPerson("张",18);
console.log(person.name);
console.log(person.age);
person.eat();
四.instanceof 与typeof的区别
typeof:用于判断基本数据类型,对引用数据类型的判断不够准确
instanceof :用于判断引用数据类型,不能判断基本数据类型。
四.JSON对象校验JSON是否合法:http://www.bejson.com/
JSON: JavaScript Object Notation JS对象的表示法
是一种特殊的JS对象,JSON是一种轻量级的数据交换格式。
上网本质:
客户端:手机,QQ,浏览器...
服务器:计算机
上网就是客户端去请求服务器,服务器返回你需要的数据的过程。
客户端与服务器之前肯定需要数据通信:
JSON就是客户端与服务器之间通信的一种数据格式。
JSON通常的写法有两种:
数组的形式:[{},{},{}]
对象的形式:{}
JSON数据的语法:
1,由键值构成
2,键值对与键值对之间使用逗号隔开
3,{} 放对象 [] 放数组
4,键也必须使用双引号包起来,不能少
5,值可以是数字,字符串,布尔值,数组,对象,null, 但是不能是函数
JSON通常的写法有两种:一定要记住JSON的值不能是函数
数组的形式:[{},{},{}],里面是对象
JSON的两种形式
JSON有两种形式:
字符串
本身是一个字符串,通过单引号引起来;
var str='[{"id":1,"name":"z3","age":4,"score":"10"}]'
JSON对象
比较特殊的JS对象
var obj=[{"id":1,"name":"z3","age":4,"score":"10"}]
JSON对象用stringify转成JSON字符串:
let str=window.JSON.stringify(obj);
JSON字符串用parse转成JSON对象:
let obj=window.JSON.parse(str);
JSON对象的修改:
1)访问
console.log(Stu[0]);//访问数组第一个元素
console.log(Stu[0].name) //访问数组第一个元素中那个对象的第一个属性值
console.log(Stu[0]["name"]) //访问数组第一个元素中那个对象的第一个属性值
2)修改
Stu[0].score="100";
console.log(Stu[0])
3)删除
delete Stu[0].score;
console.log(Stu[0])
4)遍历
//先用for或者for each来遍历数组,在用for in 来遍历内层的对象
for(var i=0;i<Stu.length;i++){
//这一步能遍历出里面的每一个数组对象
for(var item in Stu[i]){
console.log(item+"====="+Stu[i][item])
}
}