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

function Person(first, last, age, eyecolor) {this.firstName = first;this.lastName = last;this.age = age;this.eyeColor = eyecolor;
}var myFather = new Person("John", "Doe", 50, "blue");
var myMother = new Person("Sally", "Rally", 48, "green");

我们也知道在一个已存在构造器的对象中是不能添加新的属性,要添加一个新的属性需要在在构造器函数中添加:

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

prototype 继承

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

  • Date 对象从 Date.prototype 继承。
  • Array 对象从 Array.prototype 继承。
  • Person 对象从 Person.prototype 继承。

所有 JavaScript 中的对象都是位于原型链顶端的 Object 的实例。

JavaScript 对象有一个指向一个原型对象的链。当试图访问一个对象的属性时,它不仅仅在该对象上搜寻,还会搜寻该对象的原型,以及该对象的原型的原型,依次层层向上搜索,直到找到一个名字匹配的属性或到达原型链的末尾。

Date 对象, Array 对象, 以及 Person 对象从 Object.prototype 继承。

添加属性和方法

有的时候我们想要在所有已经存在的对象添加新的属性或方法。

另外,有时候我们想要在对象的构造函数中添加属性或方法。

使用 prototype 属性就可以给对象的构造函数添加新的属性:

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

当然我们也可以使用 prototype 属性就可以给对象的构造函数添加新的方法:

function Person(first, last, age, eyecolor) {this.firstName = first;this.lastName = last;this.age = age;this.eyeColor = eyecolor;
}Person.prototype.name = function() {return this.firstName + " " + this.lastName;
};

【JavaScript高级教程】JavaScript prototype(原型对象)相关推荐

  1. JavaScript高级 |彻底搞懂原型对象

    本文已收录于专栏 ⭐️ <JavaScript>⭐️ 学习指南: 对象的原型 函数的原型 new操作符 将方法放原型里 constructor 总结梳理 原型对象 内存表现 完结散花 参考 ...

  2. 尚硅谷JavaScript高级教程(javascript实战进阶)学习笔记

    前言 这个是我学习过程中的笔记,分享给大家,希望对大家有用. 学习内容是尚硅谷JavaScript高级教程(javascript实战进阶),这里是视频链接. 我在前面有两篇对于web前端HTML和CS ...

  3. 菜鸟教程 之 JavaScript 高级教程

    From:https://www.runoob.com/js/js-objects.html JavaScript 对象 JavaScript 中的所有事物都是对象:字符串.数值.数组.函数... ( ...

  4. JavaScript高级之构造函数和原型

    1.1 概述 在典型的 OOP 的语言中(如 Java),都存在类的概念,类就是对象的模板,对象就是类的实例,但在 ES6之前, JS 中并没用引入类的概念. ES6, 全称 ECMAScript 6 ...

  5. JavaScript强化教程——JavaScript Math(算数) 对象

    为什么80%的码农都做不了架构师?>>>    本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍:JavaScript强化教程 -- JavaScript Math(算数 ...

  6. 视频教程-ThreeJS 3D高级教程-JavaScript

    ThreeJS 3D高级教程 网名:海洋,CSDN社区讲师,3D游戏引擎开发者,IT讲师,计算机图形学方向研究生,曾在浙江大学CAD&CG;国家重点实验室学习.从事IT行业15年,主导或参与了 ...

  7. JavaScript强化教程 —— JavaScript 总结

    本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍:JavaScript强化教程 -- JavaScript 总结 本教程中我们向您讲授了如何向 html 页面添加 JavaScript,使 ...

  8. JavaScript强化教程——JavaScript 总结

    本教程中我们向您讲授了如何向 html 页面添加 JavaScript,使得网站的动态性和交互性更强. 你已经学习了如何创建对事件的响应,验证表单,以及如何根据不同的情况运行不同的脚本. 你也学到了如 ...

  9. JavaScript强化教程——JavaScript 运算符

    本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍:JavaScript强化教程 -- JavaScript 运算符  JavaScript 算术运算符 算术运算符用于执行两个变量或值的运算 ...

最新文章

  1. 【错误记录】Flutter 混合开发获取 BinaryMessenger 报错 ( FlutterActivityAndFragmentDelegate.getFlutterEngine() )
  2. JavaScript中instanceof运算符的用法以及和typeof的区别
  3. MultipartFile 文件上传
  4. java面向对象:关键字 —(16)
  5. 30 | 图的表示:如何存储微博、微信等社交网络中的好友关系?
  6. 大数据之-Hadoop3.x_MapReduce_切片机制与MapTask并行度决定机制---大数据之hadoop3.x工作笔记0102
  7. LeetCode 516 最长回文子串
  8. HTML5项目实战之旅行社网站——PC端固定布局
  9. Android DevicePolicyManager 设备管理
  10. Oracle与MySQL的备份还原及密码修改等
  11. 测试知识总结1 —— 测试的分类
  12. mysql execute 方法_MyEclipse------execute()使用方法
  13. 【Linux】【Shell】如何循环进入文件夹批量处理数据?批量修改文件的脚本
  14. 【CF480D】Parcels DP
  15. 计算机语言发展的三个阶段,机器语言、汇编语言与高级语言
  16. linux CPU降频脚本
  17. 蓝桥杯: 调手表【BFS】【Python】
  18. 关于使用fluxion工具破解wifi密码的详细教程
  19. Ultra Mobile Paygo美国手机号教程
  20. Docker学习三 Docker安装Mysql

热门文章

  1. 【渝粤题库】广东开放大学 实用文写作 形成性考核
  2. 【渝粤题库】国家开放大学2021春2143西方经济学题目
  3. SI4432射频芯片方案物联网无线通信模块数传的典型应用
  4. python解析多层嵌套json_Python爬虫解析多个嵌套JSON,多级,json
  5. 电机与拖动单相变压器实验,江南大学物联网工程学院,实验报告
  6. java ee 下载 安装配置_JavaEE下载安装及配置.doc
  7. java heapsort_排序算法笔记:堆排序 HeapSort in java
  8. java哈希_Java如何采用哈希码实现分类(以员工分配为例)
  9. airflow mysql_Airflow 使用及原理分析
  10. php baocuo error,PHP编译报错configure: error: Cannot find libmysqlclient under /usr.