JavaScript原型对象

声明

该文部分代码和内容节选自菜鸟教程,仅用作个人学习,特此声明

链接https://www.runoob.com/

JavaScript原型对象

所有的 JavaScript 对象都会从一个 prototype(原型对象)中继承属性和方法。

1、添加属性

经过尝试,我们发现在一个已经存在构造器的对象中是不能直接用 对象名.属性名 = "属性值" 的方式来添加新属性的。如下实例

<script>
function Person(first, last, age, eye) {
  this.firstName = first;
  this.lastName = last;
  this.age = age;
  this.eyeColor = eye;
}

Person.nationality = "xxxx";
var myFather = new Person("John", "Doe", 50, "blue");
document.getElementById("demo").innerHTML =
"我父亲的国籍是 " + myFather.nationality;   //我父亲的国籍是 undefined

观察上边例子的输出结果,很明显的发现 nationality 属性并没有被添加到这个 Person 对象中

要添加属性的话,得这样

1.在构造器函数中添加

function Person(first, last, age, eyecolor) {
  this.firstName = first;
  this.lastName = last;
  this.age = age;
  this.eyeColor = eyecolor;
  this.nationality = "China";
}

2.通过新建对象实例来传递属性

var myFather = new Person("John", "Doe", 50, "blue");
myFather.nationality = "China"

或者使用prototype属性来给对象的构造函数添加新属性。下面就来介绍以下prototype继承


2、prototype 继承

  • 所有的 JavaScript 对象都会从一个 prototype(原型对象)中继承属性和方法:
    • Date 对象从 Date.prototype 继承。
    • Array 对象从 Array.prototype 继承。
    • Person 对象从 Person.prototype 继承。
  • 所有 JavaScript 中的对象都是位于原型链顶端的 Object 的实例
  • JavaScript 对象有一个指向一个原型对象的。当试图访问一个对象的属性时,它不仅仅在该对象上搜寻,还会搜寻该对象的原型,以及该对象的原型的原型,依次层层向上搜索,直到找到一个名字匹配的属性或到达原型链的末尾。
  • Date 对象, Array 对象, 以及 Person 对象从 Object.prototype 继承。

有的时候我们想要在所有已经存在的对象添加新的属性或方法。另外,有时候我们想要在对象的构造函数中添加属性或方法。使用 prototype 属性就可以给对象的构造函数添加新的属性和方法

2.1 添加属性

练习实例

练习代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>属性添加练习</title>
</head>
<body>

<h2>JavaScript 对象</h2>

<p id="demo"></p>

<script>
function Person(firstname, lastname, age, eyecolor) {
  this.firstName = firstname;
  this.lastName = lastname;
  this.age = age;
  this.eyeColor = eyecolor;
}

Person.prototype.nationality = "China";

var myFather = new Person("John", "Doe", 50, "blue");
document.getElementById("demo").innerHTML =
"我父亲的国籍是 " + myFather.nationality;
</script>

</body>
</html>


2.2 添加方法

练习实例

练习代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>添加方法练习</title>
</head>
<body>

<h2>JavaScript 对象</h2>

<p id="demo"></p>

<script>
function Person(first, last, age, eye) {
  this.firstName = first;
  this.lastName = last;
  this.age = age;
  this.eyeColor = eye;
}

Person.prototype.name = function() {
  return this.firstName + " " + this.lastName
};

var myFather = new Person("xxx", "yyy", 50, "blue");
document.getElementById("demo").innerHTML =
"我的父亲是 " + myFather.name();
</script>

</body>
</html>

posted @ 2022-05-07 11:28  无关风月7707  阅读(26)  评论(0编辑  收藏  举报