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原型链部分详细使用说明案例的更多相关文章

  1. js原型链与继承(初体验)

    js原型链与继承是js中的重点,所以我们通过以下三个例子来进行详细的讲解. 首先定义一个对象obj,该对象的原型为obj._proto_,我们可以用ES5中的getPrototypeOf这一方法来查询 ...

  2. 深入理解JS原型链与继承

    我 觉得阅读精彩的文章是提升自己最快的方法,而且我发现人在不同阶段看待同样的东西都会有不同的收获,有一天你看到一本好书或者好的文章,请记得收藏起来, 隔断时间再去看看,我想应该会有很大的收获.其实今天 ...

  3. JS原型链

    JS作为发展了多年了对象语言,支持继承,和完全面向对象语言不同的是,JS依赖原型链来实现对象的继承. 首先JS的对象分两大类,函数对象和普通对象,每个对象均内置__proto__属性,在不人为赋值__ ...

  4. 深入分析JS原型链以及为什么不能在原型链上使用对象

    在刚刚接触JS原型链的时候都会接触到一个熟悉的名词:prototype:如果你曾经深入过prototype,你会接触到另一个名词:__proto__(注意:两边各有两条下划线,不是一条).以下将会围绕 ...

  5. JS 原型链图形详解

    JS原型链 这篇文章是「深入ECMA-262-3」系列的一个概览和摘要.每个部分都包含了对应章节的链接,所以你可以阅读它们以便对其有更深的理解. 对象 ECMAScript做为一个高度抽象的面向对象语 ...

  6. js 原型链和继承(转)

    在理解继承之前,需要知道 js 的三个东西: 什么是 JS 原型链 this 的值到底是什么 JS 的 new 到底是干什么的 1. 什么是 JS 原型链? 我们知道 JS 有对象,比如 var ob ...

  7. 一张图看懂 JS 原型链

    JS 原型链,画了张图,终于理清楚各种关系有木有 写在最后: __proto__是每个对象都有的一个属性,而prototype是函数才会有的属性!!! function Person() { } 是函 ...

  8. 简单粗暴地理解js原型链–js面向对象编程

    简单粗暴地理解js原型链–js面向对象编程 作者:茄果 链接:http://www.cnblogs.com/qieguo/archive/2016/05/03/5451626.html 原型链理解起来 ...

  9. JS原型链与继承别再被问倒了

    原文:详解JS原型链与继承 摘自JavaScript高级程序设计: 继承是OO语言中的一个最为人津津乐道的概念.许多OO语言都支持两种继承方式: 接口继承 和 实现继承 .接口继承只继承方法签名,而实 ...

随机推荐

  1. windows32位安装MYSQL-python1.2.3

    建议不要用pip安装MYSQL-python,因为会自动选择MYSQL-python1.2.5这个版本,但是这个版本不支持windows 32位系统. 1.首先安装VS2008,因为要依赖VC9.0编 ...

  2. 开发检测MySQL主从同步插件

    Nagios的状态码 OK 退出码0,表示正常工作 WARNING  退出码1,表示处于警告阶段 CRITICAL    退出码2,表示处于紧急状态,严重状态 UNKOEN   退出码3,表示无法获取 ...

  3. 共通css初次尝试

    1.网页的主要的html <@fn.html css=["${basePath}/css/help/guideCommon.css${versionControl}"]tit ...

  4. 关于JavaScript中连等赋值那点事

    今天看了前端网上关于JS的题目,其中有一道题目挺有意思的.如下 var a = b =10; (function(){ var a = b = 20; })(); console.log(a); co ...

  5. Appium 解决锁屏截屏问题(java篇)

    今天有个小伙伴问我,怎么把锁屏进行解锁操作?   A.思路在初始化driver后,加入等待判断是否有锁屏(元素)(记得要加入等待) B.如果有就进行解锁,就一般的输入数字密码然后进行解锁(当然了你要知 ...

  6. 深入浅出数据结构C语言版(6)——游标数组及其实现

    在前两次博文中,我们由表讲到数组,然后又由数组的缺陷提出了指针式链表(即http://www.cnblogs.com/mm93/p/6576765.html中讲解的带有next指针的链表).但是指针式 ...

  7. 持续集成:TestNG组织如何测试用例

    持续集成:TestNG组织如何测试用例   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:90 ...

  8. 老李分享:《Linux Shell脚本攻略》 要点(一)

    老李分享:<Linux Shell脚本攻略> 要点(一)   第一章:Shell起步基础 1.变量:在bash中,每一个变量的值都是字符串.无论你给变量赋值时,有没有使用引号,值都会以字符 ...

  9. Android 用 camera2 API 自定义相机

    前言 笔者因为项目需要自定义相机,所以了解了一下 Android 关于 camera 这块的 API.Android SDK 21(LOLLIPOP) 开始已经弃用了之前的 Camera 类,提供了 ...

  10. WPF 杂谈——开篇简言。

    这俩年多来笔者一直在从事关于WPF的开发.虽然不能说是专家级别的.但是对于WPF的应用还是有一定的了解.论他的灵活性决对不在WinForm之下.WPF的出现更是引发一段热议.他的何去何从更是让很多人感 ...