TypeScript及React学习系列四:typescript中的类(上)--es5中的类与继承问题

es5中的类与继承问题

在学习TS中的类之前,先复习下ES5中的类相关的操作

  • 最简单的类

  • 构造函数增加方法

  • 原型链增加属性或方法

  • 类中的静态方法

  • ES5中的继承

  • 原型链实现继承的问题

  • 原型链+构造函数组合实现继承

    ES5中没有专门定义类的方法,通过构造函数实现

  1. 最简单的类,只有属性没有方法
function Person(){
	this.name = "李华";
	this.age = 23;
}
var p = new Person();
alert(p.name); //打印李华
  1. 构造函数增加方法
function Person(){
	this.name = "李华";
	this.age = 23;
	this.study = function(){
		alert(this.name + "在学习");
}
var p = new Person();
p.study(); //打印,李华在学习
  1. 原型链增加属性或方法
function Person(){
	this.name = "李华";
	this.age = 23;
}
Person.prototype.sex = "男"; //原型链增加属性
Person.prototype.run = function(){//原型链增加方法
	alert(this.name + "在跑");
var p = new Person();
p.run(); //打印,李华在跑
注意:原型链上的属性会被多个实例共享,而构造函数不会
  1. 类中的静态方法

实例方法必须实例化后才可使用,静态方法可直接调用

function Person(){
	this.name = "李华";
	this.age = 23;
}
Person.getInfo = function(){ //静态方法
	alert("静态方法");
}

  1. ES5中的继承
    (1) 原型链+对象冒充的组合继承模式

对象冒充可以继承构造函数里面的属性和方法,但没法继承原型链上的属性和方法

function Person(){
	this.name = "李华";
	this.age = 23;
	this.study = function(){
		alert(this.name + "在学习");
}
Person.prototype.sex = "男"; //原型链增加属性
Person.prototype.run = function(){//原型链增加方法
	alert(this.name + "在跑");
//新建Student类继承Person
function Student(){
	Person.call(this); //对象冒充实现继承
}
var s = new Student();
w.study(); //正确,对象冒充可以继承构造函数里面的属性和方法
w.run(); //错误,对象冒充无法继承原型链上的属性和方法

(2) 原型链实现继承

function Person(){
	...//同上
}
Person.prototype.sex = "男"; //原型链增加属性
Person.prototype.run = function(){//原型链增加方法
	alert(this.name + "在跑");
//新建Student类继承Person
function Student(){
}
Student.prototype = new Person(); //原型链实现继承
var s = new Student();
s.study();//可以继承构造函数里的属性和方法
s.run(); //也可以继承原型链中的属性和方法

  1. 原型链实现继承的问题

实例化子类的时候没法给父类传参

function Person(name,age){
	this.name = "李华";
	this.age = 23;
	this.study = function(){
		alert(this.name + "在学习");
}
function Student(name,age){
}
Student.propotype = new Person();
var s1 = new Student("张三",28);
s1.study(); //执行结果是undefined在学习
			//实例化子类时无法给父类传参
  1. 原型链+构造函数组合的继承

原型链+构造函数冒充对象的组合,既可以原型链上的属性和方法,又可以在实例化子类时给父类传参

function Person(name,age){
	this.name = "李华";
	this.age = 23;
	this.study = function(){
		alert(this.name + "在学习");
}
function Student(name,age){
	Person.call(this,name,age);
}
Student.propotype = new Person();
var s1 = new Student("张三",28);
s1.study(); //张三在学习
s1.run(); //张三在跑

另一种方式:

function Person(name,age){
	this.name = "李华";
	this.age = 23;
	this.study = function(){
		alert(this.name + "在学习");
}
function Student(name,age){
	Person.call(this,name,age);
}
Student.propotype = Person.propotype;
var s1 = new Student("张三",28);
s1.study(); //张三在学习
s1.run(); //张三在跑
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
什么是TypeScriptTypeScript是JavaScript的加强版,它给JavaScript添加了可选的静态型和基于的面向对象编程,它拓展了JavaScript的语法。不过,你不必担心TypeScript跟浏览器不兼容,因为在编译时,它产生的都是JavaScript代码。为什么要学TypeScritpt?TypeScript是一门很有前景和钱景的语言;它能大幅的提高工作效率,并且减少错误;这堂课我们能学到什么?随着前端行业越来越受到重视,前端的逻辑也越来越复杂,对前端从业者的职业要求也越来越高,Vue、Angular、React和一些新的框架层出不穷,而作为Angular等框架的推荐语言TypeScript也在市场得到了认可和追捧,不管是前端、还是游戏引擎、以及一些大型项目开发都开始展露头角。但是这方面学习资源相对较少。课程特点:本堂课程通过深入浅出的讲解,幽默风趣的风格; 让大家在3个小时的课程能够掌握大部分TypeScript的核心知识; 同时能够使用TypeScript进行React等框架的项目开发; 为大家的学习和在工作使用TypeScript打下坚实的基础。课程大纲:1.TS的初步配置2.TS 数据型 any 枚举3.函数的参数和返回值型4.非常重要 非常重要5.静态属性和方法 Math6.泛型7.模块化 systemjs8.项目TS+react+webpack结合的工作流应型管理 js->tsx 2.0如何用TS开发react->TSX(难点->官网 项目)工作流 package.json -> npm start npm run build 适用人群:1.Typescript零基础想掌握ts正确学习姿势和入门的初学者2.经验丰富的jser想拓宽自己知识掌握ES6和ES7新功能的从业者3.想在工作和项目使用ts结合VAR框架的人员4.有志于成为全栈开发人员却苦于无法入门后端和跟后端沟通不畅的开发者5.想深入了解和使用angular的人员

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值