function human(name,tall){
this.name=name;
this.tall=tall;
this.toSleep=function(){
alert('no sleep');
}
} human.prototype.toSleep=function(){
alert('sleep');
} var meimei=new human("meimei",160);
var xiaoqiang=new human("xiaoqiang",170); //会先去找meimei这个对象中是否含有toSleep方法
//如果没有就会去原型中即human构造器找,这样两个就会相等meiemi.toSleep()==xiaoqiang.toSleep()为true
meiemi.toSleep();
情况1:
function animal(legs){
this.leg=legs;
} function human(name,tall){
this.name=name;
this.tall=tall;
}
human.prototype=new animal(2); var meimei=new human("meimei",160);
var xiaoqiang=new human("xiaoqiang",170); meimei.leg 情况2:
function animal(legs){
this.leg=legs;
} function human(name,tall){
this.name=name;
this.tall=tall;
} human.prototype.head=1;
human.prototype={leg:2}; //整个对象被替换
human.prototype.leg=2; var meimei=new human("meimei",160);
var xiaoqiang=new human("xiaoqiang",170); meimei.leg 情况3:call()以及apply()
function sleep(){
alert(this.name+"to Sleep");
}
sleep(); ----window对象调用 **********************************
var meiemi={
name:'meiemi',
sleep:sleep
}
meimei.sleep(); ----meimei to Sleep **********************************
var meiemi={
name:'meiemi'
}
sleep.call(meimei); ----meimei to Sleep ***********************************
function sleep(time){
alert(time+":"+this.name+"to Sleep");
}
var meiemi={
name:'meiemi'
}
sleep.call(meimei,"21:00"); ----传参方式不一样
sleep.apply(meimei,["21:00"]) 情况4:
类式继承:
function Super(){
this.colors=["red","blue"]; //this为Super.call(this)传入的对象,该对象返回的结果就有一个colors
}
function Sub(){
//Super方法的执行环境改成了this
//this是new Super是创建的对象,最后被返回的对象
Super.call(this);
} ***********************************
原型式继承:
function obj(o){
function F(){}
F.prototype=o; //new了一个对象,但原型指向o
return new F();
}
var box={
name:'zhang',
arr:['borther','sister']
};
var b1=obj(box); //没有new了,在方法中内部创建了
alert(b1.name);
**********************************

js-原型以及继承小案例的更多相关文章

  1. 彻底弄懂JS原型与继承

    本文由浅到深,循序渐进的将原型与继承的抽象概念形象化,且每个知识点都搭配相应的例子,尽可能的将其通俗化,而且本文最大的优点就是:长(为了更详细嘛). 一.原型 首先,我们先说说原型,但说到原型就得从函 ...

  2. js原型链+继承 浅析

    名称:    prototype--原型对象    __proto__--属性 原型链与继承网上搜索定义,看起来挺绕的 .先说继承: 所有的对象实例都可以共享原型对象包含的属性和方法  例如一个实例A ...

  3. [js]js原型链继承小结

    这是之前总结的, 发现有很多的毛病,就是重点不突出,重新翻看的时候还是得耗费很长时间去理解这玩意. js中的继承 js中什么是类 1,类是函数数据类型 2.每个类有一个自带prototype属性 pr ...

  4. js原型链继承的傻瓜式详解

    本文争取用最简单的语言来讲解原型链继承的OOP原理 0.如果对原型继承还没有大致了解,完全一头雾水,请先阅读 <JavaScript高级程序设计>第六章最后部分的寄生组合式继承 或者_廖雪 ...

  5. 一个小实例理解js 原型和继承

    导语1:一个构造函数的原型对象,其实就是这个构造函数的一个属性而已,属性名叫prototype,值是一个对象,对象中有一些属性和方法,所以每个构造函数的实例对象都拥有这些属性和方法的使用权. 导语2: ...

  6. JS原型和继承

    //所有的函数都有一个prototype属性 function aa() { } console.info(aa.prototype); //这个prototype属性引用了一个对象,即原型,初始化时 ...

  7. js原型与继承

    demofunction Fun(){}
var foo = new Fun();foo.__proto__ === Fun.prototype 摘要 1.js本身不提供类实现,es6引入了class ...

  8. 【JS】深入理解JS原型和继承

    前言 在学习JS中的原型,原型链,继承这些知识之前,我们先学习下基础知识:函数和对象的关系.  我们一直都知道,函数也是对象的一种,因为通过instanceof就可以判断出来.但是函数和对象的关系并不 ...

  9. JS原型链继承

    继承普通版 继承逻辑上都差不多,普通版调用方式比较繁琐,不利于反复大量的使用: (function (){ //创建一个人员类 function Person(name){ this.name = n ...

随机推荐

  1. 【mongo】mongo数据转json时特殊类型处理

    mongo数据库中的有些数据类型是无法用json序列化的,比如ObjectId或者datetime.datetime类型. 可以通过json.JSONEncoder来处理 import json im ...

  2. Jquery获取select 控件的change事件时选中的值

    HTML代码如下: <div class="col-sm-9 col-xs-12"> <select id="groupid" class=& ...

  3. Mysql之INFORMATION_SCHEMA解析1

    INFORMATION_SCHEMA库是Mysql提供的一个系统库,保存了数据库的原数据,方便用户监控与管理Msyql. 现在单说与INNODB相关的库:INNODB_SYS_TABLES,INNOD ...

  4. 如何设计一个 iOS 控件?(iOS 控件完全解析) (转)

    前言 一个控件从外在特征来说,主要是封装这几点: 交互方式 显示样式 数据使用 对外在特征的封装,能让我们在多种环境下达到 PM 对产品的要求,并且提到代码复用率,使维护工作保持在一个相对较小的范围内 ...

  5. ViewPager部分源码分析一:加载数据

    onMeasure()调用populate(),完成首次数据初始化. populate()维护ViewPager的page,包括mItems和mAdapter. populate(): if (cur ...

  6. javascript - 事件详解

    一.事件流 1.事件流 描述的是在页面中接受事件的顺序 2.事件冒泡 由最具体的元素接收,然后逐级向上传播至最不具体的元素的节点 (最具体 –> 最不具体) 3.事件捕获 最不具体的节点先接收事 ...

  7. 《Linux私房菜》笔记和问题记录

    鸟哥的Linux私房菜简体首页 对Linux的学习侧重于基本命令和运维相关的部分,最后章节的测试问题不错. 1.VIM程序编辑器 1.所有的Linux都会内建VI:很多软件的编辑接口都会主动呼叫VI: ...

  8. qsort函数详解

    C语言标准库函数 qsort 详解 文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作. 原文链接:http://www.slyar.c ...

  9. OCJP(1Z0-851) 模拟题分析(五)over

    Exam : 1Z0-851 Java Standard Edition 6 Programmer Certified Professional Exam 以下分析全都是我自己分析或者参考网上的,定有 ...

  10. 使用RMAN DUPLICATE...FROM ACTIVE DATABASE创建物理standby database

    Applies to: Oracle Server - Enterprise Edition - Version 11.1.0.6 to 11.2.0.4 [Release 11.1 to 11.2] ...