# 对象的新旧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来绑定父级需要的参数或者先绑定原型链再改回来
最后更新: 11/20/2024, 9:13:30 AM