📅  最后修改于: 2023-12-03 15:07:22.366000             🧑  作者: Mango
原型 JavaScript 是一种基于原型链的面向对象编程语言,它是 JavaScript 中面向对象编程的核心部分。原型 JavaScript 的所有对象都是由既定的原型对象继承而来,而这些原型对象又都是通过其他原型对象继承而来的。
在原型 JavaScript 中,每个对象都有一个 proto 属性,用于指向该对象的原型对象。而每个原型对象又有一个 proto 属性,指向它的父原型对象,这种关系就形成了一条原型链。如果某个方法或属性在一个对象上找不到,便会沿着原型链继续向上查找,直到找到该属性或方法为止。
// 声明一个原型对象
var parent = {
getName: function() {
console.log('parent name');
}
};
// 声明一个继承于 parent 的原型对象
var child = Object.create(parent);
// 执行 child 的 getName 方法,它会沿着原型链向上查找 getName 方法
child.getName(); // 输出 parent name
原型 JavaScript 中的构造函数与其他语言中的构造函数有所不同。通过指定一个函数体中的属性和方法,可以在原型 JavaScript 中定义一个构造函数。可以使用 new 运算符创建一个新的对象,该对象带有构造函数中定义的方法和属性。
// 声明一个构造函数
function Person(name) {
this.name = name;
}
// 在构造函数的原型对象上定义一个方法
Person.prototype.getName = function() {
console.log(this.name);
}
// 使用构造函数创建一个新的对象
var person = new Person('Tom');
// 调用新对象上的方法
person.getName(); // 输出 Tom
原型 JavaScript 中的原型继承是通过继承一个原型对象来创建一个新的对象,新的对象就可以像原型对象一样拥有相同的属性和方法。
// 声明一个原型对象
var parent = {
name: 'parent',
getName: function() {
console.log(this.name);
}
};
// 声明一个继承于 parent 的原型对象
var child = Object.create(parent, {
name: {
value: 'child'
}
});
// 调用 child 的 getName 方法
child.getName(); // 输出 child
原型 JavaScript 的核心特点是原型链。所有对象都是通过原型链来继承方法和属性的。构造函数和原型继承可以用于创建新的对象或者扩展原型对象。在使用原型 JavaScript 时,需要重视原型链和继承机制。