稳扎稳打JS——“继承”
来源:互联网 发布:咸鱼卖家申请淘宝介入 编辑:程序博客网 时间:2024/06/06 06:31
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。
//定义构造函数Personvar Person = function(name, age){ this.name = name; this.age = age;}Person.prototype.school = "NJUPT";
var p = new Person("chaimm",23);p.school;
当访问p.school时,JS会首先在对象p的属性中查找,若不存在,则通过_proto_属性向上查找,当发现Person.prototype属性中存在school时,则查找成功。否则,继续沿着原型链向上查找。
- 覆盖“父类”属性
var p = new Person("chaimm",23);p.school = "NJU";alert(p.school);
按照原型链查找次序,首先从当前对象的属性域查找,若找到school,则输出结果。从而实现面向对象中继承的效果。
- 为“父类”添加新的属性
Person.prototype.hobby = "LOL";
可以为任何“父类”添加任何属性。
- 使用hasOwnProperty函数可判断某属性是否是本对象的属性
for(item in p){ if(p.hasOwnProperty(item)){ console.log(item); }}
hasOwnProperty是Object.prototype中的函数,因此所有对象都可以使用。
5 3
- 稳扎稳打JS——“继承”
- 稳扎稳打JS——“对象”
- 稳扎稳打JS——this
- 稳扎稳打JS——执行上下文
- 稳扎稳打JS——自由变量
- 稳扎稳打JavaScript(二)——图解对象内存模型
- 稳扎稳打JavaScript(四)——闭包
- js最理想的继承——寄生组合式继承
- js继承——详解继承的几种方法
- JS继承——原型的应用
- JS面向对象——继承
- js学习笔记:对象——继承
- JS——call(简单继承)
- js高级——继承的运用
- js面向对象编程—继承
- JS面向对象(二)—继承
- 稳扎稳打JavaScript(一)——作用域链内存模型
- 稳扎稳打JavaScript(三)——创建对象的几种方式
- 得到一个对象的方法与属性(重要)
- java 字节流和字符流的区别
- POJ3666 making the grade dp+前缀+离散化
- oracle常用的数据字典
- JS在父页面写子页面的按钮响应事件
- 稳扎稳打JS——“继承”
- NYOJ-35-表达式求值(中缀式转后缀式 逆波兰表达式)
- android studio Butterknife的基本用法
- poj 1061 青蛙的约会(扩展欧几里得)
- 线程概述
- 面试算法问题
- lua数据结构之TString的内部实现
- RMQ---求区间最值(poj 3264)
- ArcEngine二次开发错误编码对照表