函数
//函数 流水线->输入 输出
//输入:参数 输出:返回值
function func(char: string){ //直接传字符型参数
let arr:string[]=['a','b','c','d','e'];
for(let i =0;i<5;i++){
if(char == arr[i]){
document.write("当前第"+ i +"个字符");
}
}
}
//调用
func('a');
function add(num1:number,num2:number):number{//括号后:number提前告知返回值类型 如果:void 无返回值
let num = num1+num2;
return num;
}
//创建函数方法1
function add1(){
}
//创建函数方法2
let add1 = function(){
}
//创建函数方法3
let add1 = () =>{
}
面向对象
以抽象形式存在是类
以实体存在的是对象
//假设 类:人 对象:令狐冲 岳不群
//属性 方法
class Person{
name:string = "默认";
age:number = 0;
say(){
document.write(this.name);//this指针 调用当前的name
}
}
//实例化对象
let a = new Person();//实例化Person的对象a
a.name = "令狐冲";
a.age = 20;
a.say();
let b = new Person();
b.name = "岳不群";
b.age = 40;
b.say();
//输出 令狐冲岳不群
构造与静态
创建对象时,构造方法同时创建
//假设 类:人 对象:令狐冲 岳不群
//属性 方法
//成员属性 成员方法
class Person{
name:string = "默认";
age:number = 0;
//构造方法
construtor(name:string,age:number){
this.name = name;
this.age = age;
}
say(){
document.write(this.name);//this指针 调用当前的name
}
}
//实例化对象
let a = new Person("令狐冲",20);//实例化Person的对象a
//a.name = "令狐冲";
//a.age = 20;
a.say();
let b = new Person("岳不群" 40);
//b.name = "岳不群";
//b.age = 40;
b.say();
//输出 令狐冲岳不群
静态
加上静态之后 所有权就从对象变成类
class Person{
static des:string = "这是一个Peron类";//静态 不属于任何对象
name:string = "默认";
age:number = 0;
//构造方法
construtor(name:string,age:number){
this.name = name;
this.age = age;
}
static test(){//静态方法
}
say(){
document.write(this.name);//this指针 调用当前的name
}
}
//修改静态属性
Person.des = "s";
//调用静态方法
Person.test();
继承
class Person{
name:string = "a";
say(){
document.write("我是人类,叫做"+name);
}
}
class Student extends Person{
nun:number = 0;
score:number = 0;
say(){
super.say();//直接调用父类的方法不被覆盖
document.write("我是学生,叫做"+this.name);
}
}
//调用
let a =new Student();
a.name ="aaa";
a.say();
//输出 我是学生,叫做a 我是学生,叫做aaa
抽象类
//抽象类 本身不能被实例化为对象,可以被继承
abstract class Person{
name:string = '';
//抽象方法,不允许被实现,子类可以实现
abstract say();
}
抽象类被子类继承,抽象方法必须实现