js-原型以及继承小案例
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-原型以及继承小案例的更多相关文章
- 彻底弄懂JS原型与继承
本文由浅到深,循序渐进的将原型与继承的抽象概念形象化,且每个知识点都搭配相应的例子,尽可能的将其通俗化,而且本文最大的优点就是:长(为了更详细嘛). 一.原型 首先,我们先说说原型,但说到原型就得从函 ...
- js原型链+继承 浅析
名称: prototype--原型对象 __proto__--属性 原型链与继承网上搜索定义,看起来挺绕的 .先说继承: 所有的对象实例都可以共享原型对象包含的属性和方法 例如一个实例A ...
- [js]js原型链继承小结
这是之前总结的, 发现有很多的毛病,就是重点不突出,重新翻看的时候还是得耗费很长时间去理解这玩意. js中的继承 js中什么是类 1,类是函数数据类型 2.每个类有一个自带prototype属性 pr ...
- js原型链继承的傻瓜式详解
本文争取用最简单的语言来讲解原型链继承的OOP原理 0.如果对原型继承还没有大致了解,完全一头雾水,请先阅读 <JavaScript高级程序设计>第六章最后部分的寄生组合式继承 或者_廖雪 ...
- 一个小实例理解js 原型和继承
导语1:一个构造函数的原型对象,其实就是这个构造函数的一个属性而已,属性名叫prototype,值是一个对象,对象中有一些属性和方法,所以每个构造函数的实例对象都拥有这些属性和方法的使用权. 导语2: ...
- JS原型和继承
//所有的函数都有一个prototype属性 function aa() { } console.info(aa.prototype); //这个prototype属性引用了一个对象,即原型,初始化时 ...
- js原型与继承
demofunction Fun(){} var foo = new Fun();foo.__proto__ === Fun.prototype 摘要 1.js本身不提供类实现,es6引入了class ...
- 【JS】深入理解JS原型和继承
前言 在学习JS中的原型,原型链,继承这些知识之前,我们先学习下基础知识:函数和对象的关系. 我们一直都知道,函数也是对象的一种,因为通过instanceof就可以判断出来.但是函数和对象的关系并不 ...
- JS原型链继承
继承普通版 继承逻辑上都差不多,普通版调用方式比较繁琐,不利于反复大量的使用: (function (){ //创建一个人员类 function Person(name){ this.name = n ...
随机推荐
- 【Git】笔记2
来源:廖雪峰 安装git(ubuntu) sudo apt-get install git 创建版本库(repository) 在想生成版本库的文件夹下输入: git init 指定用户名和邮箱 g ...
- iOS push与present Controller的区别
push与present都可以推出新的界面.present与dismiss对应,push和pop对应.present只能逐级返回,push所有视图由视图栈控制,可以返回上一级,也可以返回到根vc,其他 ...
- Android Studio新建了一个项目提示Error:Unable to start the daemon process
提示如下错误:
- Makefile_:=与=的区别
1."=" make会将整个makefile展开后,再决定变量的值.也就是说,变量的值将会是整个makefile中最后被指定的值.看例子: x = foo y ...
- KMP算法学习
kmp算法完成的任务是:给定两个字符串O和f,长度分别为n和m,判断f是否在O中出现,如果出现则返回出现的位置.常规方法是遍历a的每一个位置,然后从该位置开始和b进行匹配,但是这种方法的复杂度是O(n ...
- (2)Underscore.js常用方法
目录 1.集合相关方法 1.1.数组的处理 map(循环,有返回值),将返回的值依次存入一个新的数组 each(循环,无返回值 ...
- 使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件(转)
Mybatis属于半自动ORM,在使用这个框架中,工作量最大的就是书写Mapping的映射文件,由于手动书写很容易出错,我们可以利用Mybatis-Generator来帮我们自动生成文件. 1.相关文 ...
- PowerDesigner生成sql及HTML格式数据库文档
一.PowerDesigner生成sql问题 生成sql的方法是 Database -->Generate Database (Ctrl + G ) 但是提示 Could not load VB ...
- lvs+keepalived 负载均衡
LVS是一个开源的软件,可以实现LINUX平台下的简单负载均衡.LVS是Linux Virtual Server的缩写,意思是Linux虚拟服务器.目前有三种IP负 载均衡技术(VS/NAT.VS/T ...
- a个人经验总结2
金额 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8& ...