# 对象的新旧js的写法
简写
let name = "zhangsan"
// obj ={name:name}
obj1 ={name}
obj={
getName:function(){
return name
}
}
obj1 ={
getName(){
return name
}
}
计算属性名
obj ={
[name+'2']:'xxx',
[name+'3'](){
}
}
原型获取方法:Object.getPrototypeOf(obj) 调转
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<title>对象</title>
</head>
<body>
<script type="text/javascript">
//es6
class Person {
constructor(name,age) {
console.log(this)//Doctor {}
this.name=name;
this.age=age;
}
speak(){
console.log(`speak ${this.age}`)
}
}
class Doctor extends Person{
constructor(name,age,args) {
super(name,age)
this.color=args;
}
work(){
console.log(`shoushu ${this.color}`)
}
}
let doctor = new Doctor("zhangsan",20,"white")
console.log(doctor)//Doctor {name: "zhangsan", age: 20, color: "white"}
doctor.speak()//speak 20
doctor.work()//shoushu white
//es5 A
function Animal(age){
this.age=age;
}
Animal.prototype.eat=function(){
console.log(this);
console.log(`eat`)
}
function Cat(age,name){
Animal.call(this,age)
this.name=name
}
var cat =new Cat(4,'mimi')
console.log(cat)//Cat {age: 4, name: "mimi"}
//es5 B
function Qun(sex){
this.species = "犬科";
this.sex=sex
}
function Dog(name,color){
this.name = name;
this.color = color;
}
Dog.prototype=new Qun("female")
Dog.prototype.constructor=Dog;
var dog=new Dog("大黄","黄色")
console.log(dog)//Dog {name: "大黄", color: "黄色"}
console.log(dog.sex)//female
</script>
</body>
</html>
TIP
- 子类仍需要传入父类所需的参数
constructor(name,age,args) {
super(name,age)
this.color=args;
}
- es5子类继承父级,需要在子类使用call来绑定父级需要的参数或者先绑定原型链再改回来
← 对象原型篇 ES5对象封装和继承 →