ts中构造函数class

js中class类

// function Animal(name,color,done){
//    this.name = name;
//    this.color = color 
//    this.done = done
// }



// // 继承属性
// Animal.prototype.a = '继承静态属性'
// Animal.prototype.say = function(){
//     return this.a

// }


// // 公共属性

// let  cat = new Animal('毛','red',function(){
//     console.log('aaaa');
// })
// let dog = new Animal()

// console.log(cat);
// console.log(cat.a);
// console.log(cat.say());
// console.log(dog.say());
// console.log(dog.name);

// private
// protected
// public  

class a{
    name = 'private'
    getA(){
      console.log('我是aclass 中静态方法');
      console.log(this.name);
    }
    constructor(c){  
        this.c = c
    }
}
class b extends a {
    getB(){
        console.log('b中state functon ');
        // 2 调用父类中的 静态方法 不能获取静态属性
        //  super 相当于父类 a
        console.log(super.getA());
        // console.log(super.name,'-------------');  // 不能获取a
    }
    constructor(c){
        // 1: 触发父类构造器
        super(c)  // super('c')
    }
}

let d = new b('c')
console.log(d);
console.log(d.getB());
console.log(d.name);

ts中class 类 1

// 定义一个 Student类
class Student {
    // 类中静态属性
    // 将来实例化的对象都具备 name  getName属性 
    a = 'name';
    getName() {
        return this.a
    }

    // 注意:指定构造器中 this.xx 类型 (key的类性)
    eye:string;
    bizi:string;
    zuiba:string;
    // constructor  Student 构造器
    // 1:形参赋值在Student类执行时,传入的实参
    // 2 每个class类都有构造器
    constructor(eye:string,bizi:string,zuiba:string){
        // this 是 Student 实例的对象 blc/wwl
        this.eye = eye;
        this.bizi = bizi;
        this.zuiba = zuiba
    }
  
}

let blc = new Student('大眼睛','高鼻梁','小嘴');
console.log(blc);
console.log(blc.getName());
console.log(blc.eye);


let wwl = new Student('小眼睛','大鼻子','大嘴巴');
console.log(wwl);
console.log(wwl.getName());
console.log(wwl.eye);


// 类的继承
//  extentds 继承
// 1 zy 类中将具有  Student 中的所有 属性
// 2 zy 创建的对象  中具有  Sudent和zy 中的属性
class zy extends Student {
    age = 12;
    getName() {
        // super 相当于父类;super 一搬用来干什么呢? 一般用来调用父类的方法
        return super.getName() + 'yan'
    };
    // 继承, 注意 子类中的constuctor 必须执行super 
    constructor(){
        // super 触发父类中的构造器
        super()
    }
}
let wlj = new zy('aa','cc','cc')
console.log(wlj);
console.log(wlj.getName());

ts class 类 2

// 限制 class类中属性的访问权限: 
// private   私有属性,允许在【自己类内】被调用
// protected 私有属性 允许在【自己类预计子类内部】调用
// public    公共属性,哪里都可以调用
// 以上 为  ts 中语法 
class a {
    private name = '123';
    protected age(){
        console.log('age');
    }
    public c = 45;
    getName(){
        // 类的内部 获取 类的属性  
        console.log(this.name);
        console.log(this.age());
        console.log(this.c);
        
        
        return this.name
    }
}

let zy = new a();
// console.log(zy.name);  // bug 
// console.log(zy.age());   // bug
console.log(zy.getName());
console.log(zy.c);

class b extends a{
    num = 1;
    getAage(){
        // console.log(this.name); // roperty 'name' is private and only accessible within class 'a'
        console.log(super.age());
        console.log(this.c,'===================');
    
    }    
}
let blc = new b()
console.log(blc);
console.log(blc.getName());
// a 类的外币获取 name
// console.log(blc.name);  // bug 
// console.log(blc.age);   // bug
console.log(blc.getAage());

console.log(blc.c);

你可能感兴趣的:(ts,前端,typescript)