今日学习内容: 1.对象的属性 value(): 结果是一个数组 keys(): 结果是一个数组 2.对象的增删改查 obj.对象属性 如果没有这个属性直接增加,如果有这个属性,直接进行覆盖修改 delete obj.属性名 删除对象的属性 defineProperty 修改对象一个属性 value: 值 配置设置一个值 writable:true 是否可修改,默认是false,不可修改 enumerable: true 是否可以被枚举(遍历),默认是false. configurable:true 是否可删除,默认是false,不可以删除 3.改变this的三个方法 call() 会调用函数 可以改变函数的this指向 参数的传递就和之前函数一样
apply() 调用函数 改变函数的this指向 第二个参数需要是一个数组类型,里面存放函数的参数
bind属性 bind() - 使用频率高些 不会直接调用函数,返回一个新函数 改变函数this的指向 4.对象 定义:属性和方法的无序集合 工厂模式 :封装一个函数-创建具体的对象 –—这个函数就像一个模板 构造函数规范: 函数名使用大写(和普通函数做个区别) 内部使用this添加属性和方法 不需要使用return关键字(内部会自动返回一个对象) 调用必须使用关键字new 构造函数在创建的时候this是没有指向 实例出具体的对象的时候,this就指向了这个对象 new的时候,我们程序执行了如下几步 1.在内存中创建一个空的对象 - {} 2.确定this指向,指向这个空对象 3.构造函数内部代码的执行,给这个空对象添加属性和方法 4.返回这个新的对象 - 内部自动执行return 对象中的成员: 实例成员 (实例化对象可以访问的属性或方法) 静态成员 (只有构造函数才能访问的属性或方法) instanceof属性 构造函数可以让我们更好的区分对象的类型 instanceof 判断某个对象是否是某个构造函数的实例化 结果是一个布尔值 5.原型对象 每个函数都有一个原型prototype,它是一个对象,所以我们也叫它原型对象,我们可以把所有的方法挂载在这个原型对象上 方法是挂载在构造函数的原型上的,为什么实例化对象可以访问? 每个实例化对象都有一个属性,叫 proto,我们可以叫它对象的原型,它是一个非标准 对象的原型全等于构造函数的原型对象 所以我们的实例对象就可以访问构造函数的原型上的方法 5.constructor 构造器、构造函数的意思 作用:主要用于记录该对象引用于哪个构造函数 它可以让原型对象重新指向原来的构造函数。 6.原型链 所有的js对象都有一个prototype属性,指向它的原型对象,当试图访问一个对象的属性时,如果没有在该对象找到,它还会搜寻该对象原型,以及该对象原型的原型,依次层层向上查找搜索,知道找到一个名字匹配的属性或到达原型链末尾。
|