让我来为你详细讲解JavaScript对象创建与继承的相关知识,包含以下几个方面:
- 对象的创建方式
- 原型与原型链
- 构造函数与类的继承
- ES6中的class关键字
1. 对象的创建方式
对象字面量
对象字面量是创建对象的一种简单方式,通过使用{}标记来生成对应的对象。例如:
var person = {
name: "张三",
age: 18,
sayHello: function() {
console.log("Hello, world!");
}
};
构造函数
构造函数可以使用关键字new来实例化一个对象。例如:
function Person(name, age) {
this.name = name;
this.age = age;
this.sayHello = function() {
console.log("Hello, world!");
};
}
var person = new Person("张三", 18);
Object.create
Object.create(proto, [propertiesObject])
方法可以创建一个指定原型和属性的对象。例如:
var person = {
name: "张三",
age: 18
};
var student = Object.create(person, {
gender: {
value: "男"
}
});
2. 原型与原型链
Javascript中的对象是通过原型链实现继承的,每一个对象都有一个[[Prototype]]属性,它指向原型对象,原型对象中也有一个[[Prototype]]属性,指向其父级原型对象,也就是原型链。
原型
对象的原型可以通过Object.getPrototypeOf(object)
获取。例如:
var person = {
name: "张三",
age: 18
};
var student = {
gender: "男"
};
Object.setPrototypeOf(student, person);
console.log(Object.getPrototypeOf(student));
// 输出: {name: "张三", age: 18}
原型链
原型链是由多个原型对象组成的链式结构,通过__proto__
属性指向父级原型对象。例如:
var person = {
name: "张三",
age: 18
};
var student = {
gender: "男",
__proto__: person
};
console.log(student.name); // 输出: 张三
3. 构造函数与类的继承
构造函数可以通过call
或apply
方法来继承父级构造函数的属性与方法。例如:
function Person(name, age) {
this.name = name;
this.age = age;
}
function Student(name, age, grade) {
Person.call(this, name, age);
this.grade = grade;
}
ES6提供了class
关键字,可以更加简洁明了地实现继承。例如:
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
}
class Student extends Person {
constructor(name, age, grade) {
super(name, age);
this.grade = grade;
}
}
4. ES6中的class关键字
ES6中的class
关键字可以更加简洁明了地创建对象和继承。例如:
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
sayHello() {
console.log("Hello, world!");
}
}
class Student extends Person {
constructor(name, age, grade) {
super(name, age);
this.grade = grade;
}
}
let person = new Person("张三", 18);
let student = new Student("李四", 20, "大三");
以上就是关于JavaScript对象创建与继承的汇总梳理,希望能对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS对象创建与继承的汇总梳理 - Python技术站