简单 粗略描述一下原型和原型链他们是js中很重要的概念,用于实现对象的继承和属性的查找。
-
原型(prototype):每个 JavaScript 对象都有一个原型,可以通过
__proto__
属性访问。原型是一个对象,它包含了共享的属性和方法。当我们访问一个对象的属性或方法时,如果对象本身不存在该属性或方法,JavaScript 引擎会自动在原型上查找。每个对象都有自己的原型,而原型本身也是一个对象,它可以有自己的原型,形成一个原型链。 -
原型链(prototype chain):当我们使用一个对象的属性和方法的时候,会先从自身找,自身没有就去原型中找,因为原型也是一个对象,如果找不到,就会到 原型中的原型中找,依次类推,直到Object.prototype为止
通过原型和原型链,我们可以实现对象的继承和属性的共享。当我们访问一个对象的属性或方法时,JavaScript 引擎会按照原型链的顺序查找,找到第一个匹配的属性或方法进行访问。这样可以减少内存占用,避免重复定义属性和方法。
例如:
function Person(name) {
this.name = name;
}
Person.prototype.sayHello = function() {
console.log('Hello, ' + this.name);
};
var person = new Person('John');
person.sayHello(); // 输出 'Hello, John'
在上述例子中,Person 是一个构造函数,它的原型对象(Person.prototype
)拥有 sayHello
方法。通过 new Person('John')
创建的 person
对象自动拥有了 Person.prototype
的属性和方法,可以调用 sayHello
方法。
总之,原型和原型链是 JavaScript 中实现对象继承和属性查找的机制,非常重要和强大。它们提供了一种灵活而高效的方式来组织和共享