1 .属性的无序集合,每个属性存放一个原始值,对象或者函数,从本质上讲,对象是一种无特定顺序的值类型数组。
2 .面向对象方法。通过定义抽象的对象,然后再实例化抽象对象,即可模拟出类的一套科学管理体系。
对象类型
1 .本地类型:Error那一类。Function(平时我们定义的函数都是属于这个),Object,Number,Array。
2 .内置对象:Math,Global,Date.
3 .宿主对象:js寄宿环境定义的对象。window,Document.
4 .使用Object构造函数创建函数创建一个不包含任何属性和方法的空对象,而是用内置构造函数的对象会继承该构造函数的属性和方法。
5 .垃圾回收机制:当对象没有被任何变量引用的时,处于废除状态。js能自动检测并运行垃圾回收机制。
6 .声明变量时使用var语句,但是声明对象属性时不能这样做。
7 .typeof NaN="number" typof Null="object" typeof undefined="undefined
"
特殊的对象
1 .构造函数是一类没有返回值的函数。
2 .所有的私有属性的方法,在命名时通过添加下滑线前缀和后缀,区分
3 .js不支持静态作用域常驻在内存中,但是可以通过函数的私有属性来模拟这个特性。构造函数的this起到占位符的地位。
4 .构造对象自己也要属性和方法,但是他只能由构造对象来存取,反过来,我们也不能通过构造函数来读取实例的属性,对于构造函数的属性,实例对象是不能继承的。
5 .实例对象:--由构造函数创建而来,也就是说,实例对象是构造对象的子对象或者说是类的实例化。
6 .实例对象的公共属性是从构造方法中继承而来的,他也有自己的私有属性,这个是不被继承的。
7 .在js中,给构造函数定义实例方法时,一般是通过把构造函数的原型对象中的一个属性设置为函数值来实现的,不浪费资源。prototype属性。
8 .原型prototype是存放类方法和其他常量的理想场所。(降低对系统资源的消耗)
9 .在实例化对象创建之后,任然可以继承到这些后添加的成员。
10 .原型属性和实例属性的关系-当自定义属性与原型属性发生冲突的时候,js解释器会先检查实例是否有这个属性,才会去检查构造器函数上是否有这个属性,这样才使原型链的继承机制起作用。
11 .在读属性的时候,会触发继承机制。但是写属性的时候,是不会触发的。会用自定义属性覆盖原属性。
12 .constructor反向引用对象的构造器。
13 .每个对象都有一个constructor函数,指向自己的构造函数。
14 .a.constructor=Point
15 .原型对象自己也有构造器,指向他自己本身。
16 .对象的构造器是通过原型对象继承的,对象的constructor继承自原型对象,如果删除上一层的constructor,那么他会沿着原型链,指向更高一层的构造器。
17 .自定义构造函数的constructor是可以修改的,但是内置对象是只读的,只是可以使用constructor来判断内置对象的数据类型
18 .es6的class怎么设置默认值。类不能设置默认值么?
目前默认值的几种情形
1 .true,false都不是的时候null
this.vif=vifdata||vifdata&&null
2 .其他值没有的时候null
this.vfor=vfordata||null
这个其实是可以在输入的时候就检测到的,但是如果这样做的话,每一次有值传递的时候都需要做一次的检查,来判断那些值是没有的。还有一种就是根据传入值的数量不同,调用不同的class,这个是因为现在的class本来就很少,这样生成的class也会有一个标记,但是并没有什么卵用啊。
属性的查找路径
1 .如果要读取某个对象的属性x,会现在此对象的实例属性中查找.没有找到,在对象的原型链上查找.在没有就继续查找原型对象的原型,一直找到属性x或者无原型为止
2 .
"."访问方式和'[]'中括号访问方式
1 .点访问的时候,属性名称必须是一个标识符,静态字符串,不能为变量
2 .中括号访问的时候,属性名称可以是一个静态字符串,也可以是一个变量.若为变量,访问的属性为变量表示的值.非常之灵活
delete删除对象
1 .只能删除对象的自有属性,不能删除继承属性
2 .Object.deletePropertty
3 .Reflect.deleteProperty