说一点对JavaScript类机制的理解(一)---JavaScript权威指南

基本定义:
  • JavaScript中,类的实现是基于原型继承机制的,如果两个实例都是从同一个原型对象上继承了属性,它们就是同一个类的实例。
  • JavaScript中,类的所有实例对象都从同一个原型对象上继承属性,原型对象是类的核心。
  • 如果两个对象继承自同一个原型,一般它们是由同一个构造函数创建并初始化的。
  • 构造函数的prototye属性被用作新对象的原型,通过一个构造函数创建的所有对象都继承自一个相同的对象,它们都是同一个类的成员。
需要理解:
  • 定义构造函数既是定义类,类名首字母要大写;构造函数是通过new关键字调用的,构造函数与普通函数调用时不尽相同的。
  • 构造函数是用来构造新对象的,必须通过new调用,对于Range()构造函数的调用会自动使用Range.prototype作为新Range对象的原型。

重点:

  • 构造函数和类的标识
    • 原型对象是类的唯一标识:当且仅当两个对象继承自同一个原型对象时,它们才是属于同一个类的实例,构造函数不能作为类的标识,只有当两个构造函数的prototype属性指向同一个原型对象时,这两个构造函数创建的实例才属于同一个类的。
    • 构造函数是类的”外在表现”,构造函数的名字通常用作类名,Range()构造函数创建Range对象,当使用instanceof来检测对象是否属于某个类时会用到构造函数,
//判断对象r是否是Range对象
r instanceof Range 
 instanceof实质上是检查r是否继承自Range.prototype
  • constructor属性
    • 任何JavaScript函数都可以用做构造函数,调用构造函数是需要用到一个prototye属性的,每个JavaScript函数都自动拥有一个prototype属性,这个属性的值是一个对象,这个对象包含唯一一个不可枚举属性constructor,cunstructor属性的值是一个函数对象:
var F = function(){};//函数对象
var p = F.prototype;//这是F相关联的原型对象
var c = p.constructor;//这是与原型相关联的函数
c === F //=>true
    对于任意函数F.prototype.constructor == F.
既然构造函数的原型中存在预先定义好的constructor属性,对象通常继承的constructor均指向它们的构造函数,构造函数是类的"公共标识"
  • constructor属性为对象提供了类
    • var o = new F(); //创建类F的一个对象
      o.constructor === F //=>true,constructor属性指代这个类
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值