神木网站设计公司,苏州网站设计选哪家,园林绿化,如何做网站好看JavaScript 的原型#xff08;Prototype#xff09;和原型链#xff08;Prototype chain#xff09;是 JavaScript 面向对象编程中的重要概念。
原型#xff08;Prototype#xff09;
在 JavaScript 中#xff0c;每个对象都有一个原型对象#xff0c;而这个原型对象…JavaScript 的原型Prototype和原型链Prototype chain是 JavaScript 面向对象编程中的重要概念。
原型Prototype
在 JavaScript 中每个对象都有一个原型对象而这个原型对象定义了这个对象的属性和方法。这个原型对象本身也可能会有自己的原型这样就形成了一个链式结构也就是所谓的“原型链”。
当在对象上查找一个属性时如果这个对象自身没有这个属性JavaScript 就会在该对象的原型也就是它的 [[Prototype]] 属性上查找如果还没有就会继续查找原型的原型以此类推直到找到对应的属性或者达到原型链的顶端即 null。
代码示例
以下面的代码为例
function Person(name) {
this.name name;
}Person.prototype.sayHello function() {
return Hello, Im ${this.name};
};let person1 new Person(Alice);
let person2 new Person(Bob);console.log(person1.sayHello()); // 输出 Hello, Im Alice
console.log(person2.sayHello()); // 输出 Hello, Im Bob
在这个例子中sayHello 方法被定义在 Person 函数的 prototype 上这样所有通过 new Person() 创建的对象都可以访问这个方法。当我们试图访问 person1 或 person2 的 sayHello 方法时JavaScript 首先会在这些对象自身上查找这个方法如果没有找到就会沿着原型链向上查找直到找到 sayHello 方法或者到达原型链的顶端。
特点说明
JavaScript 的原型系统有以下特点
动态性可以在运行时动态地添加或删除对象的属性和方法。共享性所有的实例都可以共享它们的原型上的属性和方法修改一个实例的属性会影响到其所有的实例。链式查找当访问一个对象的属性或方法时如果这个对象自身没有这个属性或方法JavaScript 会沿着原型链向上查找。