![[衰]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_34.cf5b4d5.png)
在 JavaScript 中,每个对象都有一个原型(prototype),它定义了该对象的属性和方法。对象可以通过原型继承属性和方法,并且这种继承是基于原型链的。
原型(Prototype):每个 JavaScript 对象(除了 null 和 undefined)都有一个原型。原型是一个对象,它包含属性和方法,可以被其他对象继承。对象可以通过 __proto__ 属性来访问其原型。
原型链(Prototype Chain):当访问一个对象的属性或方法时,如果对象本身没有该属性或方法,JavaScript 引擎会沿着原型链向上查找,直到找到该属性或方法或者到达原型链的末尾(即 Object.prototype)。原型链的形成是通过对象的原型(__proto__)指向其父级原型的方式实现的。
例如,假设我们有对象 A,它继承自对象 B,而对象 B 又继承自对象 C,那么 A 的原型链就是 A -> B -> C -> Object.prototype -> null。当我们访问 A 的某个属性时,JavaScript 会先在 A 自身查找,如果找不到则去 B 中查找,再找不到则去 C 中查找,以此类推。
构造函数与原型:构造函数是用于创建对象的特殊函数,而每个构造函数都有一个原型对象。通过在构造函数的原型上定义属性和方法,可以实现对由该构造函数创建的对象的继承。
function Person(name) {
this.name = name;
}
Person.prototype.sayHello = function() {
console.log('Hello, ' + this.name);
};
var person1 = new Person('Alice');
person1.sayHello(); // 输出: Hello, Alice
在上面的例子中,我们使用构造函数 Person 创建了一个对象 person1。构造函数 Person 的原型对象(即 Person.prototype)上定义了方法 sayHello,这个方法可以被所有通过 Person 构造函数创建的对象共享。
原型和原型链是 JavaScript 中实现继承和属性访问的基础,通过利用原型和原型链的特性,我们可以实现对象之间的属性和方法的复用,提高代码的效率和灵活性。
原型(Prototype):每个 JavaScript 对象(除了 null 和 undefined)都有一个原型。原型是一个对象,它包含属性和方法,可以被其他对象继承。对象可以通过 __proto__ 属性来访问其原型。
原型链(Prototype Chain):当访问一个对象的属性或方法时,如果对象本身没有该属性或方法,JavaScript 引擎会沿着原型链向上查找,直到找到该属性或方法或者到达原型链的末尾(即 Object.prototype)。原型链的形成是通过对象的原型(__proto__)指向其父级原型的方式实现的。
例如,假设我们有对象 A,它继承自对象 B,而对象 B 又继承自对象 C,那么 A 的原型链就是 A -> B -> C -> Object.prototype -> null。当我们访问 A 的某个属性时,JavaScript 会先在 A 自身查找,如果找不到则去 B 中查找,再找不到则去 C 中查找,以此类推。
构造函数与原型:构造函数是用于创建对象的特殊函数,而每个构造函数都有一个原型对象。通过在构造函数的原型上定义属性和方法,可以实现对由该构造函数创建的对象的继承。
function Person(name) {
this.name = name;
}
Person.prototype.sayHello = function() {
console.log('Hello, ' + this.name);
};
var person1 = new Person('Alice');
person1.sayHello(); // 输出: Hello, Alice
在上面的例子中,我们使用构造函数 Person 创建了一个对象 person1。构造函数 Person 的原型对象(即 Person.prototype)上定义了方法 sayHello,这个方法可以被所有通过 Person 构造函数创建的对象共享。
原型和原型链是 JavaScript 中实现继承和属性访问的基础,通过利用原型和原型链的特性,我们可以实现对象之间的属性和方法的复用,提高代码的效率和灵活性。
展开
评论
7