前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >稳扎稳打JS——“继承”

稳扎稳打JS——“继承”

作者头像
大闲人柴毛毛
发布2018-03-09 16:42:47
1K0
发布2018-03-09 16:42:47
举报
文章被收录于专栏:大闲人柴毛毛大闲人柴毛毛

JS使用原型链实现“继承”

  • JS是“基于对象”的语言,因此没有继承。但可以使用JS的特性实现“继承”——原型链。
  • JS使用_proto_属性构造原型链,如 p._proto_ ——> Perosn.prototype Perosn.prototype._proto_ ——> Object.prototype Person._proto_ ——> Function.prototype Function.prototype._proto_ ——> Object.prototype
  • 若当前对象中没有要访问的属性,JS就会自动沿着原型链向上查找,若在某一个对象的prototype中找到相应的属性,则访问它;若直到原型链顶端也没找到,则返回undifined。
代码语言:javascript
复制
//定义构造函数Person
var Person = function(name, age){
    this.name = name;
    this.age = age;
}
Person.prototype.school = "NJUPT";
代码语言:javascript
复制
var p = new Person("chaimm",23);
p.school;

当访问p.school时,JS会首先在对象p的属性中查找,若不存在,则通过_proto_属性向上查找,当发现Person.prototype属性中存在school时,则查找成功。否则,继续沿着原型链向上查找。

  • 覆盖“父类”属性
代码语言:javascript
复制
var p = new Person("chaimm",23);
p.school = "NJU";
alert(p.school);

按照原型链查找次序,首先从当前对象的属性域查找,若找到school,则输出结果。从而实现面向对象中继承的效果。

  • 为“父类”添加新的属性
代码语言:javascript
复制
Person.prototype.hobby = "LOL";

可以为任何“父类”添加任何属性。

  • 使用hasOwnProperty函数可判断某属性是否是本对象的属性
代码语言:javascript
复制
for(item in p){
    if(p.hasOwnProperty(item)){
        console.log(item);
    }
}

hasOwnProperty是Object.prototype中的函数,因此所有对象都可以使用。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年09月15日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • JS使用原型链实现“继承”
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档