文档章节

浅析继承方式

LinearLaw
 LinearLaw
发布于 2017/04/24 21:18
字数 287
阅读 8
收藏 0
点赞 0
评论 0

最近发现有些概念都混淆了,重新回去查了下资料,做个记录。

1、原型继承

(1)、将对象指定为另一对象的原型,即可让该对象拥有另一对象的属性

不光光是属性,方法也可以使用。

    //创建构造函数
       function Person(){}

    //创建对象,并手动指定其constructor为Person
       var human = {
           constructor: Person,
           name: "jack",
           age: 18,
           gender: "male",
           say:function(){
                console.log("sayxxx")
           }
       };

    //指定构造函数Person的原型为human
       Person.prototype = human;

    //利用Person构造函数,创建实例化对象,该对象将会同时拥有Person和human的属性
       var p = new Person();
       console.log(p.name);
       console.log(p.say());

(2)、将对象的属性混入到原型中

       function Person(){}

       Person.prototype.extend = function (obj) {
           //本方法中的 this 指向的就是 Person.prototype
           for(var k in obj){
               this[k] = obj[k];
           }
       };
       var human = {
           name: "jack",
           age: 18,
           gender: "male"
       };

       Person.prototype.extend(human);

    //这里的extend相当于for-in语法
    //        for(var k in human){
    //            Person.prototype[k] = human[k];
    //        }

       var p = new Person();

2、经典继承

        Object.create()
        //这个方法有兼容性问题

        var obj = Object.create(obj1);
        //创建一个对象obj, 让obj1作为obj的原型

3、混入式继承(mix-in)

for(var k in obj1){
          obj[k] = obj1[k];        
}

© 著作权归作者所有

共有 人打赏支持
LinearLaw
粉丝 4
博文 33
码字总数 39273
作品 0
深圳
个人站长
Go入门教程

基础编程 01、Go语言介绍 02、环境搭建 03、第一个Go程序 04、命名、变量、常量 05、基础数据类型 06、格式化输出、类型转换、类型别名 07、运算符 08、流程控制 09、自定义函数 10、递归函数...

tennysonsky
01/19
0
0
跟我一起学习C++虚函数--第四篇

在前一篇,我们讨论了在多继承情况下,具有虚函数的类的内存布局情况。本篇将进一步探索在多重继承,即具有重复继承的情况下的内存布局情况。在阅读本篇和下一篇之前,建议先阅读本博客另一篇...

pathenon
2012/07/15
0
4
跟我一起学习C++虚函数--第五篇

在前一篇,我们讨论了在多重继承情况下,具有虚函数的类的内存布局情况。本篇将进一步探索在多重虚拟继承情况下的内存布局情况。 在讨论多重虚拟继承前,我们先对《浅析GCC下C++多重继承 & ...

pathenon
2012/07/15
0
0
Javascript原型链和原型继承之浅析

哇好久都没有写随笔啦,整个人都慵懒啦。 为了不让大家忘记我,把以前写过的一些慢慢发出来。 在JS 中, 有两条链子,作用域链 和 原型链. 作用域链相对容易理解,两点 函数限定变量作用域,就是说...

sinat_34719507
2017/03/11
0
0
android动画浅析

经过这几天对android动画的学习,本人对android动画有了些浅显的了解。 android动画分为三大类:帧动画(Frame animation)、补间动画(tween animation)、属性动画(property animation )...

风过后
2016/01/07
89
0
netty高性能浅析

最近在看内部的rpc框架,感觉rpc最重要的就是高效的网络传输,所以学习netty的使用和原理极其重要,于是把netty的基础再总结一下。 首先我们先来看一下netty中的概念,熟悉了基本概念后再来进...

KKys
2017/08/30
0
0
浅析 CreateFileMapping

函数CreateFileMapping为一个指定的文件创建或打开一个已命名或未命名的文件映射对象,告知系统文件映射对象需要多少物理存储器。 HANDLE CreateFileMapping(HANDLE hFile, 参数 hFile: [i...

牛肉圆粉不加葱
2014/07/08
0
0
LinkedHashMap浅析

首先明确几点: LinkedHashMap继承在HashMap,非线程安全的 数据存储是通过HashMap存储,自身通过链表存储 LinkedHashMap中Entry继承自HashMap的Entry,扩展了两个字段:before和after:实现...

清尘V
2016/05/08
8
0
浅析 Spring IoC - 基础概念

IoC是什么? IoC(Inversion of Control)即控制反转,不是什么技术,而是一种设计思想。在Java开发中,IoC 意味着将你设计好的对象交给容器去控制,而不是传统的在对象内部直接控制(比如说...

pradosoul
2015/10/15
180
0
C++ 虚函数和虚继承浅析

一、虚函数 定义:在某基类中声明为 virtual 并在一个或多个派生类中被重新定 义的成员函数 语法:virtual 函数返回类型 函数名(参数表) { 函数体 } 用途:实现多态性,通过指向派生类的基...

吃一堑消化不良
2016/11/21
23
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

崛起于Springboot2.X之集成MongoDb使用mongoTemplate CRUD(27)

1、pom依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.7</version></dependency><dependency> <groupId>log4j</......

木九天
6分钟前
0
0
切分log日志

新建logback.xml放到resource里面 <?xml version="1.0" encoding="utf-8"?><configuration> <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender"> <......

talen
11分钟前
0
0
spring @Resource 和 @Autowired 的使用区别

这两个 注解 @Resource 和 @Autowired , 常识都知道 @Resource 是 JAVAEE 自带的,@Autowired 是 spring 的自定义注解。 一般情况下, 使用 bean的时候, 这两个注解 随便使用一个即可。 但...

之渊
16分钟前
0
0
springboot集成elasticsearch客户端问题记录

1背景说明 服务端ES版本为5.5.2,springboot版本为1.5.6。 工程中添加如下依赖 2问题记录 2.1 NetworkPlugin类找不到 报错java.lang.ClassNotFoundException: org.elasticsearch.plugins.Net...

zjg23
18分钟前
1
0
快速构建ceph可视化监控系统

前言 ceph的可视化方案很多,本篇介绍的是比较简单的一种方式,并且对包都进行了二次封装,所以能够在极短的时间内构建出一个可视化的监控系统 本系统组件如下: ceph-jewel版本 ceph_expor...

万建宁
18分钟前
0
0
Java构造器使用注意

public class 父类A {int age = 10;protected void say() {System.out.println("父类A");}public 父类A() {override();}public void override() {Syst...

咸鱼AI
18分钟前
0
0
TensorFlow 线性分类

构造直线 z = 2 * x - 3 * y + 4 x0*w0+x1*w1+b=0 x1=-x0* w0/w1-b/w1 斜率 k= -w0/w1 截距 -b/w1 随机生成数据,加入一定的偏差,用直线将二维平面分为两部分 使用线性模型拟合参数 损失函数...

阿豪boy
21分钟前
0
0
翻译冒泡排序测试

翻译一个冒泡排序: var a = [1,3,2,4,6,5];var f = 0;var n = a.length ;for( var i =1; i<= n; i++) { for( var j = n-1 ; j >= i; j --) { if(a[j] < a[j+1]) { ......

钟元OSS
23分钟前
0
0
maven父、子级版本号同时修改

命令: mvn versions:set -DnewVersion=0.0.2-SNAPSHOT

沉默的懒猫
24分钟前
0
0
Spring boot中的异常处理之注解响应

Controller层 return patientRepository.findById(id) .orElseThrow(() -> new NotFoundException(String.format("Patient %d not found", id))); Exception类 @ResponseS......

亚林瓜子
25分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部