js继承的三种实现
概念:在有些面向对象语言中,可以使用一个类(子类)继承另一个类(父类),子类可以拥有父类的属性和方法,这个功能可以在js中进行模拟。
三种方法:
第一种:扩展Object方法
 Object.prototype.ext=function(parObject){//Object.prototype.ext在原型链上定义的ext所有的对象都可以访问到
     //循环遍历父类对象所有属性
     for(var i in parObject){
         //为子类对象添加这个遍历到的属性
         //它的值是父类对象这个属性的属性值
         this[i] = parObject[i];
     }
 }
 function Person(p_name,p_age){
     this.name=p_name;
     this.age=p_age;
     this.speak=function(){
         alert(this.name+this.age);
     }
 }
 function Student(p_no){
     this.no=p_no;
     this.say=function(){
         alert(this.no+this.name_this.age);
     }
 }
 var stu = new Student(101);
 stu.ext(new Person('xiaoqiang',20));
 stu.speak();
 stu.say();
第二种:使用call和apply方法
 function Person(p_name,p_age){
     this.name=p_name;
     this.age=p_age;
     this.speak=function(){
         alert(this.name+this.age);
     }
 }
 function Student(p_no,p_name,p_age){
     this.no=p_no;
     this.say=function(){
         alert(this.name+this.age+this.no);
     }
     Person.call(this,p_name,p_age);//this是上下文,后面的参数是传递给person的参数,参数的先后顺序要一一对应,如果是用apply则后面的参数要用数组
 }
 var stu = new Student(8,'zhagsan',18);
 stu.speak();
 stu.say();
第三种:原型继承
 function Person(p_name,p_age){
     this.name=p_name;
     this.age=p_age;
     this.speak=function(){
         alert(this.name+this.age);
     }
 }
 function Student(p_no){
     this.no=p_no;
     this.say=function(){
         alert(this.name+this.age+this.no);
     }
 }
 Student.prototype = new Person('wangwu',21);
 var stu = new Student(10);
 stu.speak();
 stu.say();
js继承的三种实现的更多相关文章
- JS面向对象(3) -- Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
		
相关链接: JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式 JS面向对象(2) -- this的使用,对 ...
 - 研究分析JS中的三种逻辑语句
		
JS中的三种逻辑语句:顺序.分支和循环语句. 一.顺序语句 代码规范如下:1. <script type="text/javascript"> var a = 10; ...
 - js中的三种函数写法
		
js中的三种函数写法 <script type="text/javascript"> //普通的声明方式 function myFun(m,n){ alert(m+n) ...
 - C++ 继承方式  //语法:class 子类 :继承方式  父类 //继承方式 三种: //1.公共继承 //2.保护继承 //3.私有继承
		
1 //继承方式 2 //语法:class 子类 :继承方式 父类 3 //继承方式 三种: 4 //1.公共继承 5 //2.保护继承 6 //3.私有继承 7 8 #include <ios ...
 - 实现JS继承的几种方法
		
总的来说,JS的继承大体上分为两种:借用构造函数方式和原型方式 首先,我们来看看借用构造函数方式的几种做法: //方式一function Person(name, sex){ this.name = ...
 - 前端js文件合并三种方式
		
最近在思考前端js文件该如何合并,当然不包括不能合并文件,而是我们能合并的文件,想了想应该也只有三种方式. 三个方式如下: 1. 一个大文件,所有js合并成一个大文件,所有页面都引用它. 2. 各个页 ...
 - Js闭包常见三种用法
		
Js闭包特性源于内部函数可以将外部函数的活动对象保存在自己的作用域链上,所以使内部函数的可以将外部函数的活动对象占为己有,可以在外部函数销毁时依然存有外部函数内的活动对象内容,这样做的好处是可 ...
 - JS常用的三种匿名函数
		
第一种: var f1=function(p1,p2){ return p1+p2; };//将函数赋值给一个变量 alert(f1(1,3)); 匿名函数没法调用,只能赋值给一个变量,由于是赋值语句 ...
 - js 函数定义三种方式
		
<p>Js 函数定义的三种方式:</p> <br> <p>方式一:function</p> <script type="te ...
 
随机推荐
- webpy:页面下载的三种实现方式
			
python: 1.import urllib urlretrieve() 方法直接将远程数据下载到本地. >>> help(urllib.urlretrieve)Help on f ...
 - 手势识别 GestureDetector ScaleGestureDetector
			
识别器GestureDetector基本介绍 当用户触摸屏幕的时候,会产生许多手势,例如down,up,scroll,filing等.一般情况下,我们可以通过View或Activity的onTouch ...
 - String对象之间的比较
			
public class StringTest { @Test public void test01() { int a = 50; // 基本数据类型比较的是值 int b = 50; System ...
 - JavaScript基础(一)
			
JavaScript一.什么是JavaScript?脚本描述语言,网页交互特效,说白了,就是实现HTML实现不了的效果.(JavaScript是一种基于对象.事件驱动的简单脚本语言,嵌入在HTML文档 ...
 - (转)SVN源码管理(上&下)
			
原文地址:http://www.cnblogs.com/IPrograming/archive/2012/12/15/SVN_1.html 使用SVN进行源码管理(上) 在原来的项目中使用的源码管理工 ...
 - ImageView设置点击效果没有用?ImageView src的图片大小改变不了?
			
ImageView设置点击效果没有用? 解决 1.ImageView xml里面必须clickable 和longClickable为true <ImageView android:layout ...
 - ORACLE SQL单行函数(三)【weber出品必属精品】
			
16.L:代表本地货币符,这个和区域有关.这个时候我们想来显示一下人民币的符号:¥ $ vi .bash_profile ---写入如下内容: export NLS_LANG='SIMPLIFIED ...
 - 用C#实现的条形码和二维码编码解码器
			
本文主要介绍可以在C#中使用的1D/2D编码解码器.条形码的应用已经非常普遍,几乎所有超市里面的商品上面都印有条形码:二维码也开始应用到很多场合,如火车票有二维码识别.网易的首页有二维码图标,用户只需 ...
 - JAVA-6-简单的模拟ATM使用
			
public static void main(String[] args) { in = new Scanner(System.in); int count = 1; int pwd = 11111 ...
 - C/C++默认浮点型
			
代码: #include <iostream> #include <cstdio> using namespace std; void test(int a){ cout< ...