实例成员:构造函数中内部通过this添加的成员 只能通过实例化对象来访问
静态成员:构造函数本身上添加的成员 只能通过构造函数来访问
构造函数原型 prototype //也叫原型对象 共享方法
语法 函数名.prototype.共享方法 =function(){}
对象原型 __proto__
__proto__等价prototype
方法查找规则:先看实例对象上是否有方法,如果有就执行
如果没有,因为对象有__proto__的存在,就去构造函数原型 prototype找方法
Constructor函数 默认指向原来的构造函数
如果给原来的原型对象重新赋值了一个对象类型,则需要手动设置construtor函数指回原来的构造函数
原型链
查找机制按原型链进行查找 就近原则
this指向: 构造函数和原型对象中 this指向对象实例
扩展内置对象
语法:函数名.prototype.xxx=function(){} //不可以采取赋值的方法,会覆盖原来的原型对象的方法
继承
ES6: extends
ES5: call()
继承父类元素
Father.call(this,父类元素)
继承父类方法
son.prototype=new Father();
//这里利用了对象的方法覆盖了原来的prototype。必须用constructor指回本身的构造函数
数组方法
遍历数组 array.forEach(function(value, index, array) {})
value 每个数组元素
index 每个数组元素的索引号
array 数组本身
筛选数组 新数组=array.filter(function(currentvalue, index, array) { return 筛选的条件})
返回值为一个新数组 所有满足条件的都返回
查看数组中是否有满足条件的元素 array.some(function(value, index, array) {})
返回值为 如果有 true 如果没有 false //查找到第一个满足条件的就停止循环
字符串方法
trim() 去除字符串两侧空格并形成新的字符串
对象方法
Object.keys(要获取的对象) 返回获得自身对象所有的属性名并以对象格式存储
Object.defineProperty(obj,prop,descriptor) 修改对象的属性或新增属性
ojb 目标对象
prop 要修改或定义的属性名 字符串格式
descriptor 目标属性所拥有的特性 对象格式{value,writeable,enumerable,configurable}
value 设置属性的值
writeable 值是否可以被重写 默认为false 不允许重写
enumerable 目标是否可以被枚举 默认为false 不允许被遍历出来
configurable 目标是否可以被删除或再次修改特性 默认为false 不允许删除和修改特性