day25
ES5继承
1.经典继承
function Animal(type,age,weight,length){
this.type=type;
this.age=age;
this.weight=weight;
this.length=length
}
Animal.prototype={
constructor:Animal,
sayType:function(){
console.log(this.type)
}
}
function Dog(type,age,weight,length,name,color){
// 经典继承又称为构造函数继承
Animal.call(this,type,age,weight,length);
this.name=name;
this.color=color;
}
处理完构造函数处理原型对象
2.//原型链继承
Dog.prototype=new Animal();
Dog.prototype.constructor=Dog;
Dog.prototype.sayColor=function(){
console.log(this.color)
}
var d1=new Dog('狗',1,'10kg','40cm','可乐','白色');
console.log(d1);
d1.sayType();
d1.sayColor();
ES6继承
class Animal{
// 静态属性
static animalAttr='Animal的静态属性';
constructor(name,age,weight){
this.name=name;
this.age=age;
this.weight=weight;
}
// 实例方法
sayName(){
console.log('实例方法')
}
// 静态方法
static animalmethod(){
console.log('Animal静态方法')
}
}
// 要实现继承
class Dog extends Animal{
constructor(name,age,weight,color){
super(name,age,weight);
this.color=color;
console.log('Dog的构造器')
}
}
let dog=new Dog('豆豆',1,10,'golden');
// 继承 子类的原型对象继承父类的原型对象
dog.sayName();
// 继承 子类的对象通过__proto__指针指向父类的对象
Dog.animalmethod();
console.log(Dog.animalAttr);
console.log(Dog.__proto__===Animal);
console.log(Dog.prototype.__proto__===Animal.prototype)
Symbol
表示一个独一无二的值
symbol全局注册:
let a = Symbol.for('张三');
let b = Symbol.for('张三');
console.log(a === b);//true
/**
*使用Symbol.for全局注册时会先查找是否包含该symbol,包含则返*回,否则进行全局注册
*/
/**
*使用Symbol.keyFor()可以获取symbol值的描述
*/
console.log(Symbol.keyFor(a))//'张三'
模板字面量
模板字符串(template string)是增强版的字符串,用反引号(`)标识。它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。
let id = 1;
let url = `121.199.0.35:8888/findById?id=${id}`;