JS 的 class

建立一个class (类)

function myclass1 () {
    this.nickname = 'mike'
}

这样,我们就建立了一个 class 名字叫myclass1, 包含一个属性nickname, 值是 mike

有了类 我们就开始建立一个实例

var1 = new myclass1()

去console里面 输入 var1.nickname 会返回值 mike

现在,我们来建立一个新的类 来继承刚才的myclass1

function newclass() {
this.age = 18
}

newclass.prototype = new myclass1()

新的类 继承了 myclass1 , 拥有 nickname 属性, 同时也有新的属性 age
最后一句 相当奇怪 看上去是 将一个实例 赋值入 一个类的原型集
实际上 效果可以像下面这样描述 原文没有这样的写法 但我测试过是可以的 注意: 这种写法只能继承 经由 prototype 定义的属性,直接用对象描述的属性 不能继承, 慎用。

newclass.prototype = myclass1.prototype;

不管怎么样 newclass 的确继承了 myclass1, 我们可以来做个试验
myclass1.prototype.homepage = 'abc.com'

我们可以去console里面检查刚才建立的newclass实例 var1
我们发现多了个新属性 homepage

还记得刚才说的 只能适用于 prototype 建立的属性吗? 也就是说 你输入 myclass1.prototype.nickname='hello kitty'
原来的nickname 仍然是 mike

最后, 提醒一下  类和实例 是两回事 很容易混淆的
比如刚才的 myclass1  是个类
var1 是个实例
访问类的原型要通过 prototype, 如果你直接输入 myclass1.nickname 是会显示 未定义

然后,再你构造类的时候 this.xxx 跟 class.prototype.xxx 是不一样的
this.xxx 是对象  优先级比 prototype.xxx 要高  但可以共存
当你将类 实例化的时候  你去访问xxx的值 是只会显示 对象的值


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值