当前位置:网站首页 > 技术经理的晋升之路 > 正文

4.ES5中的类

es5里面的类:没有专门定义类的方法 通过构造函数实现

最简单的类:只有属性没有方法

function Person() { this.name='张三'; this.age=20; } var p=new Person();//实例化 alert(p.name);//张三

在构造函数和原型链里面增加属性和方法

function Person(){ this.name='张三'; /*属性*/ this.age=20; this.run=function(){/*实例方法*/ alert(this.name+'在运动'); } } //原型链上面的属性会被多个实例共享 构造函数不会 Person.prototype.sex="男"; Person.prototype.work=function(){ alert(this.name+'在工作'); } var p = new Person(); alert(p.name);//张三 p.run();//张三在运动 p.work();//张三在工作,实例方法必须通过new以后才能调用

类里面的静态方法

//添加静态方法直接给类添加 Person.getInfo=function(){ alert('我是静态方法'); } Person.getInfo();//静态方法不需要实例化 直接通过类.方法调用

es5里面的继承:对象冒充实现继承

function Person(){ this.name='张三'; /*属性*/ this.age=20; this.run=function(){ /*实例方法*/ alert(this.name+'在运动'); } } Person.prototype.sex="男"; Person.prototype.work=function(){ alert(this.name+'在工作'); } //Web类 继承Person类 原型链+对象冒充的组合继承模式 function Web(){ Person.call(this); /*对象冒充实现继承*/ } var w=new Web(); w.run(); //对象冒充可以继承构造函数里面的属性和方法 w.work(); //但是没法继承原型链上面的属性和方法 报错w.work is not a function

es5里面的继承   原型链实现继承

function Person(){ this.name='张三'; /*属性*/ this.age=20; this.run=function(){ /*实例方法*/ alert(this.name+'在运动'); } } Person.prototype.sex="男"; Person.prototype.work=function(){ alert(this.name+'在工作'); } //Web类 继承Person类 原型链+对象冒充的组合继承模式 function Web(){} Web.prototype=new Person();//原型链实现继承 var w=new Web(); //原型链实现继承:可以继承构造函数里面的属性和方法,也可以继承原型链上面的属性和方法 w.run(); w.work();

原型链实现继承的问题

function Person(name,age){ this.name=name; /*属性*/ this.age=age; this.run=function(){ /*实例方法*/ alert(this.name+'在运动'); } } Person.prototype.sex="男"; Person.prototype.work=function(){ alert(this.name+'在工作'); } // var p=new Person('李四',20);//实例化时传参 // p.run();//李四在运动 //构造函数实现继承时:实例化子类的时候没法给父类传参 function Web(name,age){} Web.prototype=new Person(); var w=new Web('赵四',20); w.run();//undefined在运动

原型+对象冒充的组合继承模式

function Person(name,age){ this.name=name; /*属性*/ this.age=age; this.run=function(){ /*实例方法*/ alert(this.name+'在运动'); } } Person.prototype.sex="男"; Person.prototype.work=function(){ alert(this.name+'在工作'); } );//对象冒充继承,实例化子类可以给父类传参 function Web(name,age){ Person.call(this,name,age } Web.prototype=new Person(); var w=new Web('赵四',20); //实例化子类的时候没法给父类传参 w.run(); w.work();

原型+对象冒充继承的另一种方式

function Person(name,age){ this.name=name; /*属性*/ this.age=age; this.run=function(){ /*实例方法*/ alert(this.name+'在运动'); } } Person.prototype.sex="男"; Person.prototype.work=function(){ alert(this.name+'在工作'); } //对象冒充继承,可以继承构造函数里面的属性和方法、实例化子类可以给父类传参 function Web(name,age){ Person.call(this,name,age); } Web.prototype=Person.prototype; var w=new Web('赵四',20); //实例化子类的时候没法给父类传参 w.run(); w.work();

 

到此这篇4.ES5中的类的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 数组中添加对象 & 通过递归数组,给数组中的对象添加新字段 & $set给对象添加新属性 & 遍历唯一ID标识-随机数或时间戳2024-11-28 17:09:05
  • Node学习(九)022-管理系统之添加英雄——服务器编写添加的接口-使用multer模块来处理、multer基本用法& 处理新的静态资源之express.static() & dirname绝对路径2024-11-28 17:09:05
  • 下载网页视频简单的办法之一2024-11-28 17:09:05
  • 短视频剪辑真的不难!50个新手必备剪辑技巧。2024-11-28 17:09:05
  • 史上最全证件照尺寸介绍「码住不迷路」2024-11-28 17:09:05
  • ElementUI el-tabs切换之前判断是否满足切换条件 不满足条件仅提示不切换Tab2024-11-28 17:09:05
  • 卸载双系统中的linux(卸载双系统中的一个)2024-11-28 17:09:05
  • 104协议(104协议中的asdu地址)2024-11-28 17:09:05
  • 电路原理详解(电路原理介绍)2024-11-28 17:09:05
  • 反激电路工作原理是什么(反激电路工作原理是什么样的)2024-11-28 17:09:05
  • 全屏图片