JS中prototype的用法实例分析

在 JavaScript 中,每个对象都有一个原型链,通过 prototype 属性来访问。原型链是指当访问对象的属性或方法时,如果当前对象没有这个属性或方法,就会继续向上查找它的原型对象,直到找到为止。

1. constructor 和 prototype

JavaScript 中的构造函数可以使用 prototype 属性来添加共享的属性和方法。例如:

-------- ------------ -
  --------- - -----
-

---------------------- - ---------- -
  ------------------- -- ---- -- ----------------
-

----- ------ - --- ----------------
--------------- -- --- ------- -- ---- -- -------

在这个例子中,我们定义了一个构造函数 Person,并给它的原型对象上添加了一个 greet 方法。由于 person 是通过 new 关键字创建的 Person 的实例,所以它可以访问 Person.prototype 上的方法 greet

2. 继承和原型链

通过 prototype 属性,我们还可以实现对象之间的继承。例如:

-------- ------------ -
  --------- - -----
-

--------------------- - ---------- -
  ------------------------- -- -----------
-

-------- --------- -
  ----------------- ------
-

------------- - --------------------------------
------------------------- - ----

------------------ - ---------- -
  ------------------------- -- -----------
-

----- --- - --- ------------
----------- -- --- ----- -- ---------
----------- -- --- ----- -- ---------

在这个例子中,我们定义了一个 Animal 的构造函数和原型对象,然后通过 Object.create 方法创建了一个新的对象作为 Dog.prototype,并将其 constructor 属性设置为 Dog。由于 Dog.prototype 是从 Animal.prototype 对象继承而来的,所以 Dog 实例可以访问 Animal 的方法 walk

3. 扩展内置类型

JavaScript 中的内置类型(如 ArrayString 等)也可以使用 prototype 属性来添加新的方法。例如:

------------------------ - ---------- -
  ------ ----------------------------------
-

------------------ ------------------ -- --- ------ ------

在这个例子中,我们给 String.prototype 添加了一个 reverse 方法,它可以反转字符串。

总结

prototype 是 JavaScript 中一个非常重要的概念,可以用于实现对象之间的继承和共享方法。通过了解原型链的工作原理,我们可以更好地理解 JavaScript 中的面向对象编程。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/2465