JavaScript原型和原型链是什么?
在JavaScript中,原型(prototype)是一种特殊的对象,它用于实现对象之间的继承,原型链(prototype chain)是原型对象之间的一种关系,它描述了从一个对象到另一个对象的继承路径,了解原型和原型链对于理解JavaScript的面向对象编程特性至关重要。
原型是什么?
1、1 原型的概念
在JavaScript中,每个对象都有一个内部属性[[Prototype]]
,它指向该对象的原型,原型是一个普通的对象,它包含了一组属性和方法,这些属性和方法可以被对象实例共享,当我们访问一个对象的属性或方法时,如果该对象本身没有这个属性或方法,那么JavaScript会沿着原型链向上查找,直到找到这个属性或方法为止。
1、2 原型的作用
原型的主要作用是实现对象之间的继承,通过原型,我们可以在一个对象的基础上修改或扩展属性和方法,而不需要创建一个新的对象,这样可以避免不必要的内存分配和复制,提高程序的性能,原型还可以帮助我们实现一些高级的编程技巧,如组合、混入等。
原型链是什么?
2、1 原型链的概念
原型链是一系列原型对象之间的关系,它从构造函数的原型开始,经过一系列的原型对象,最终到达目标对象,在JavaScript中,每个对象都有一个内部属性[[Prototype]]
,它指向该对象的原型,当我们访问一个对象的属性或方法时,如果该对象本身没有这个属性或方法,那么JavaScript会沿着原型链向上查找,直到找到这个属性或方法为止。
2、2 原型链的构成
原型链是由一系列原型对象组成的链表结构,每一个原型对象都是其构造函数的实例,它们之间通过[[Prototype]]
属性相互关联,在原型链上,最底层的是null
,表示对象本身;往上走是它的原型对象;再往上走是它的父级原型对象,以此类推,当查找到目标对象时,就找到了目标属性或方法。
如何使用原型和原型链?
3、1 创建原型对象
我们可以通过Object.create()
方法或者构造函数的prototype
属性来创建一个原型对象。
// 方法1:使用Object.create()创建原型对象 const person = Object.create({ name: '张三' }); person.sayHello = function() { console.log('你好,我是' + this.name); }; person.sayHello(); // 输出:你好,我是张三 // 方法2:使用构造函数的prototype属性创建原型对象 function Person(name) { this.name = name; } Person.prototype.sayHello = function() { console.log('你好,我是' + this.name); }; const person = new Person('张三'); person.sayHello(); // 输出:你好,我是张三
3、2 访问对象的属性和方法
当我们访问一个对象的属性或方法时,如果该对象本身没有这个属性或方法,那么JavaScript会沿着原型链向上查找。
const person1 = new Person('张三'); console.log(person1.name); // 输出:张三 console.log(person1.sayHello); // 输出:undefined
3、3 实现继承
我们可以通过将子类的原型设置为父类的实例来实现继承。
function Person(name) { this.name = name; } Person.prototype.sayHello = function() { console.log('你好,我是' + this.name); }; const person1 = new Person('张三'); person1.sayHello(); // 输出:你好,我是张三
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/212040.html