JavaScript原型对象
声明
该文部分代码和内容节选自菜鸟教程,仅用作个人学习,特此声明
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>
分类:
JavaScript 入门随笔
, Day47
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律