对象函数原型

对象

创建对象

  1. 字面量{}
  2. new Object()

本质都是调用了Object构造函数,因此实例对象的__proto__指向Object.prototype对象

对象属性控制符

设置属性(默认属性描述符为false)

  1. Object.defineProperty(obj,key,{属性描述符})
  2. `Object.defineProperties(obj,{key:{属性描述符},key2:{属性描述符}})
    获取属性描述符
  3. Object.getOwnPropertyDescriptor(obj,key)
  4. Object.getOwnPropertyDescriptors(obj)
    `
    禁止添加新属性
  5. Object.preventExtensions(obj)
    禁止对象配置/删除已有的属性
  6. Object.seal(obj)
    不能修改属性
  7. Object.freeze(obj)

属性描述符

数据属性

  • configurable 对象属性配置
  • enumrable 对象属性枚举
  • value
  • writable 对象属性修改
    存取属性
  • configurable
  • enumrable
  • get
  • set

存取属性用于

let obj={
__name:"lxy",
get name(){
return this._name
}
set name(){
this._name=name
}
}

函数

构造函数
new+Foo()
这种形式的函数称之为构造函数,一般首字母大写
执行流程

  1. 内存中创建一个空对象{},暂时称之为a
  2. 将构造函数内部this指向a
  3. a对象的__proto__指向构造函数的显式原型对象prototype
  4. 执行构造函数体代码
  5. 若函数内部没有返回值,自动返回a对象

原型

  1. 任何对象都有原型对象[ [proto] ],通过_proto_获取,对象本质由new Object()创建,对象的__proto__指向Object.prototype
  2. 函数也是对象,也有_proto_,函数本质由new Function()创造,函数的__proto__指向Function.prototype
  3. 函数是特殊的对象,还有显式原型对象prototype
  4. 通过构造函数new出来的对象的原型指向构造函数的prototype,prototype对象的原型指向自己构造函数的原型,这样形成的层级关系称之为原型链

函数与原型

  1. 函数是对象有原型对象[ [proto ]] (浏览器提供__proto__形式访问)
  2. 函数是特殊的对象有显式原型prototype
  3. 这里函数的原型对象一般指的是prototye
  4. prototype中的constructor指向构造函数

作用:
当对象中获取属性,会触发get操作,首先从当前的对象寻找属性,找不到就沿着原型链寻找
在编译阶段
内存中存放函数对象,函数对象中
有父级作用域,代码,prototype原型对象
什么时候查找停止
查找到Object.prototype
constructor
构造器属性,指向构造函数
Object.defineProperty(obj,‘constructor’,{value:fn})

对象与原型

  1. 对象都有原型对象[ [ proto] ],浏览器提供__proto__api来访问
  2. 通过构造函数new出来的对象__proto__ 指向构造函数的prototype对象,
  3. prototype对象也是对象,它的__proto__指向它的构造函数的prototype,这样一层层指上去构成了链式结构原型链
  4. 原型链的终点是Object构造函数的prototype对象因为通过{}创建出的对象实质上是调用了new Object()函数

顶层原型对象有许多默认的属性与方法

Object.prototype={
_ _proto:null,
constructor: {}
toString:{}
isPrototypeOf:{}
}

方法 Object.getPrototypeOf(obj)获得对象原型 hasOwnProperty()是否是自己的属性,不包括原型上的 in,key in obj,只要存在在自己或者原型上就为true instanceof 判断构造函数的原型是否出现在实例的原型链上 isPropertyOf判断对象`是否出现在实例的原型链上

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值