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中的类的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/jszy-jszl/11197.html