js原型链部分详细使用说明案例
1. 'index.html'文件
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>js原型讲解</title>
</head>
<body>
<script src='js/person.js'></script>
<script src='js/student.js'></script>
<script src='js/coder.js'></script>
<script>
var person = new Person('Jack',18,'男');
person.sleep();
person.dating();
person.eat('蛋炒饭');
person.birthday();
/////student实例化对象
/***
* 实例化后的对象在查找属性或者方法的时候
* 首先在 this 自己内部查找
* 如果没有找到 就会到原型中查找
* 如果原型中没有,那么就会去原型的原型继续查找
* ...
* 直到找到为止 如果没有找到那么返回undefined或者报错
*/
var student = new Student('小明',15,'男','县一中');
console.dir(student);
student.sleep();
student.dating();
student.eat('蛋炒饭');
student.birthday();
student.goSchool();
var coder = new Coder('Jerry',25,'男','MS');
coder.sleep();
coder.work();
console.log(coder);
</script>
</body>
</html>
```
2. 'js/person.js'文件
```javascript
/****
* 定义一个Person对象
* 包含 name age gender 三个属性
*/
function Person(name, age,gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
////Person的原型
Person.prototype = {
/////睡觉
sleep:function(){
console.log(this.name + '每天睡觉八小时');
},
////吃饭 传入参数food
eat:function(food){
console.log(this.name+'特别爱吃'+food);
},
////不需要参数
dating:function(){
console.log('单身狗');
},
////出生年份,根据年龄计算 不需要参数
birthday:function(){
var birthYear = (new Date()).getFullYear()-this.age;
console.log(this.name+'的出生在'+birthYear+'年');
}
}
```
3. 'js/student.js'文件
```javascript
function Student(name,age,gender,school){
this.school = school;
Person.apply(this,[name,age,gender]);
}
// function EmptyFun(){}
// ///设置空对象的原型为Person的原型
// EmptyFun.prototype = Person.prototype;
// var temEmptyFun = new EmptyFun(); ////实例化的一个空对象
// Student.prototype = temEmptyFun; ///设置学生的原型为实例化的空对象
// Student.prototype.constructor = Person
//Object.create()可以通过你提供的原型创建一个新对象,
//这个新对象的原型就是create()的第一个参数
Student.prototype = Object.create(Person.prototype);
Student.prototype.constructor = Student
////为学生原型定义一个方法 goSchool
Student.prototype.goSchool = function(){
console.log(this.name + '每天早上八点准时去'+this.school);
}
/////为学生创建一个dating方法
Student.prototype.dating = function(){
console.log('学校禁止早恋!');
}
```
4. 'js/coder.js'文件
```javascript
function Coder(name,age,gender,company){
Student.apply(this,[name,age,gender,company]);
}
Coder.prototype = Object.create(Student.prototype);
Coder.prototype.work = function(){
console.log('writing code ....../n fix bugs');
}
```
js原型链部分详细使用说明案例的更多相关文章
- js原型链与继承(初体验)
js原型链与继承是js中的重点,所以我们通过以下三个例子来进行详细的讲解. 首先定义一个对象obj,该对象的原型为obj._proto_,我们可以用ES5中的getPrototypeOf这一方法来查询 ...
- 深入理解JS原型链与继承
我 觉得阅读精彩的文章是提升自己最快的方法,而且我发现人在不同阶段看待同样的东西都会有不同的收获,有一天你看到一本好书或者好的文章,请记得收藏起来, 隔断时间再去看看,我想应该会有很大的收获.其实今天 ...
- JS原型链
JS作为发展了多年了对象语言,支持继承,和完全面向对象语言不同的是,JS依赖原型链来实现对象的继承. 首先JS的对象分两大类,函数对象和普通对象,每个对象均内置__proto__属性,在不人为赋值__ ...
- 深入分析JS原型链以及为什么不能在原型链上使用对象
在刚刚接触JS原型链的时候都会接触到一个熟悉的名词:prototype:如果你曾经深入过prototype,你会接触到另一个名词:__proto__(注意:两边各有两条下划线,不是一条).以下将会围绕 ...
- JS 原型链图形详解
JS原型链 这篇文章是「深入ECMA-262-3」系列的一个概览和摘要.每个部分都包含了对应章节的链接,所以你可以阅读它们以便对其有更深的理解. 对象 ECMAScript做为一个高度抽象的面向对象语 ...
- js 原型链和继承(转)
在理解继承之前,需要知道 js 的三个东西: 什么是 JS 原型链 this 的值到底是什么 JS 的 new 到底是干什么的 1. 什么是 JS 原型链? 我们知道 JS 有对象,比如 var ob ...
- 一张图看懂 JS 原型链
JS 原型链,画了张图,终于理清楚各种关系有木有 写在最后: __proto__是每个对象都有的一个属性,而prototype是函数才会有的属性!!! function Person() { } 是函 ...
- 简单粗暴地理解js原型链–js面向对象编程
简单粗暴地理解js原型链–js面向对象编程 作者:茄果 链接:http://www.cnblogs.com/qieguo/archive/2016/05/03/5451626.html 原型链理解起来 ...
- JS原型链与继承别再被问倒了
原文:详解JS原型链与继承 摘自JavaScript高级程序设计: 继承是OO语言中的一个最为人津津乐道的概念.许多OO语言都支持两种继承方式: 接口继承 和 实现继承 .接口继承只继承方法签名,而实 ...
随机推荐
- taobao-pamirs-proxycache开源缓存代理框架实现原理剖析
写在前面 taobao-pamirs-proxycache 是一款开源缓存代理框架, 它将 缓存代码 与 业务代码 解耦.让开发专注coding业务, 缓存通过xml配置即可实现.本文先从此工具如何使 ...
- 手机自动化测试:appium问题解决
手机自动化测试:appium问题解决 Appium遇到问题: 问题一:问题org.openqa.selenium.remote.UnreachableBrowserException: Could ...
- Python可视化学习(2):Matplotlib快速绘图基础
Matplotlib将大部分的绘图对象都封装成为对象,故理论上所有的图表元素(如Line2D, Text,Label等)都是对象,都可以将其在图表中提取出来并配置实例的属性.同时,Matplotlib ...
- ServerSuperIO 3.5版本的体系结构,以及未来规划的几点思考
一.特点 1.轻型高性能通信框架,适用于多种应用场,轮询模式.自控模式.并发模式和单例模式. 2.不仅是通讯框架,是设备驱动.IO通道.控制模式场景的协调机制. 3.支持协议驱动器,可以按规范写标准协 ...
- package(1):tm
tm包是R语言中为文本挖掘提供综合性处理的package,进行操作前载入tm包,vignette命令可以让你得到相关的文档说明.使用默认安装的R平台是不带tm package的,在安装的过程中,它会 ...
- WebGL 高级技术
1.如何实现雾化 实现雾化的方式由多种,这里使用最简单的一种:线性雾化(linear fog).在线性雾化中,某一点的雾化程度取决于它与视点之间的距离,距离越远雾化程度越高.线性雾化有起点和终点,起点 ...
- GET 请求复制转发一直等待响应的问题 Transfer-Encoding: chunked
今天在做Proxy 转发请求的时候发现 GET的请求转发时一直在等待输出. 而Post等其它操作是可以的. 同事告诉我一般一直等待响应可能是输出内容长度和头部ContentLength不一致导致的, ...
- require.js学习笔记
使用require.js的好处? 1 有效的防止命名冲突(可以将变量封装在模块内,通过暴露出的接口解决命名冲突) 2 解决不同JS文件中的依赖 3 可以让我们的代码以模块化的方式组织 官方网站http ...
- ios 渐进淡出
在github上寻找的经典demo //以view为继承类 LazyFadeInView-master https://github.com/itouch2/LazyFadeInView //以Lab ...
- java多线程基本概述(三)——同步块
1.1.synchronized方法的弊端 package commonutils; public class CommonUtils { public static long beginTime1; ...