共计 1537 个字符,预计需要花费 4 分钟才能阅读完成。
(四)、JavaScript 原型、原型对象、原型链之间的作用关系
为感激大家的反对,特发福利红包(支 F 宝口令红包),点击返回支付:Gitee
JavaScript 中的原型、原型对象和原型链是密不可分的概念,它们之间形成了对象继承的根底。上面我将具体介绍它们之间的作用关系:
原型对象是原型的实体
原型对象是一个理论存在的对象,用于存储属性和办法。当创立一个函数时,零碎会主动创立一个原型对象并赋值给函数的 prototype 属性。
原型是指向原型对象的援用
原型是函数的一个属性,它指向原型对象的援用。通过原型,咱们能够拜访原型对象中的属性和办法。当调用函数中未定义的属性时,JavaScript 会沿着原型链逐级查找,直到找到该属性或者查找到 Object.prototype 为止。
原型链是原型对象之间的连贯
原型链是原型对象之间的连贯,每个原型对象都有一个指向父级原型对象的指针,即 Prototype 属性。当查找某个属性时,如果以后原型对象上不存在该属性,JavaScript 会沿着原型链往上查找,直到找到该属性或者查找到 Object.prototype 为止。这种查找形式就形成了原型链。
原型链实现了对象的继承
通过原型链,咱们能够实现对象的继承。当咱们创立一个子类时,它的原型对象指向父类的实例,从而实现了父类的属性和办法的继承。
上面是一个简略的示例,展现了原型、原型对象和原型链之间的关系:
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.sayHello = function() {console.log("Hello, I'm "+ this.name +", and I'm" + this.age + "years old.");
};
var john = new Person("John", 30);
john.sayHello(); // 输入:Hello, I'm John, and I'm 30 years old.
console.log(john.hasOwnProperty("name")); // 输入:true
console.log(john.hasOwnProperty("sayHello")); // 输入:false
console.log(Object.getPrototypeOf(john) === Person.prototype); // 输入:true
console.log(Object.getPrototypeOf(Person.prototype) === Object.prototype); // 输入:true
console.log(Object.getPrototypeOf(Object.prototype) === null); // 输入:true
在这个示例中,咱们创立了一个 Person 函数作为构造函数,并在它的原型对象上增加了一个办法 sayHello。而后咱们通过 new 操作符创立了一个 john 对象,并调用了它的 sayHello 办法。在拜访 john 对象的属性时,它会先查找本身是否有该属性,而后会沿着原型链查找 Person.prototype 对象,最终查找到了 Object.prototype 对象。同时,咱们也能够应用 Object.getPrototypeOf 办法来查看对象的原型是否正确。
总之,原型、原型对象和原型链是 JavaScript 中十分重要的概念,它们形成了对象继承的根底。理解它们之间的作用关系,对于深刻了解 JavaScript 的面向对象编程十分有帮忙。
为不便宽广前端技术爱好者,整合了前端技术相干常识和资源,且有很多福利能够支付:Gitee
如有转载需要,请分割:Gitee
本文由 mdnice 多平台公布