文档章节

js继承的几种方式

C
 Carry-YI
发布于 2017/04/22 12:24
字数 275
阅读 3
收藏 0
点赞 0
评论 0

1、原型继承

"use strict";
/*
* 每一个构造函数都有一个原型对象
* 每一个原型对象都包含一个指向构造函数的指针
* 每一个对象都包含一个指针指向原型对象
* 原型对象==实例对象
* 原型对象就包含一个指针指向原型对象
* 结论:层次递进,就构成了原型链
 */
function GrandFather(){
    this.name = "张三";
}

GrandFather.prototype.getName = function () {
    return this.name;
}

function Parent() {

}

Parent.prototype = new GrandFather();

function Child(){

}

Child.prototype = new Parent();

var child = new Child();
alert(child.getName());

2、构造函数继承

"use strict";
//父子关系,子类的构造函数里调用父类的构造函数
function Parent() {
    this.name = "李四";
    this.age = 12;
}

function Child() {
    Parent.call(this);
}

var child = new Child();
alert(child.name);
alert(child.age);

3、构造函数和原型组合继承

"use strict";
//组合继承(将构造函数和原型链结合在一起)
function Parent() {
    this.name = "李四";
    this.age = 12;
}

Parent.prototype.getName = function(){
    alert(this.name);
}

function Child() {
    Parent.call(this);
}

Child.prototype = new Parent();

var child = new Child();
alert(child.getName());

4、寄生式继承

"use strict";
//寄生式继承
function CreateOther(original){
    var clone = Object(original);
    clone.getName = function () {
        alert(this.name);
    }
    return clone;
}

var person = {
    name:"张三",
    age:"11"
}

var otherPerson = CreateOther(person);
person.getName();

 

© 著作权归作者所有

共有 人打赏支持
C
粉丝 0
博文 6
码字总数 1826
作品 0
深圳
程序员
JavaScript继承详解(四)

文章截图 - 更好的排版 在本章中,我们将分析Douglas Crockford关于JavaScript继承的一个实现 - Classical Inheritance in JavaScript。 Crockford是JavaScript开发社区最知名的权威,是JSO...

solu
2010/12/25
0
0
深入浅出 JavaScript 中的 this

JavaScript 是一种脚本语言,因此被很多人认为是简单易学的。然而情况恰恰相反,JavaScript 支持函数式编程、闭包、基于原型的继承等高级功能。本文仅采撷其中的一例:JavaScript 中的 this...

i33
2012/10/25
0
0
深入浅出 JavaScript 中的 this

在 Java 等面向对象的语言中,this 关键字的含义是明确且具体的,即指代当前对象。一般在编译期确定下来,或称为编译期绑定。而在 JavaScript 中,this 是动态绑定,或称为运行期绑定的,这就...

idea_biu
2012/09/05
0
0
《javascript语言精粹》读书笔记——第5章:继承

javascript是一门弱类型语言,从不需要类型转换。对象继承关系变得无关紧要。对于一个对象来说重要的是它能做什么,而不是它从哪里来。javascript是一门基于原型的语言,这意味着对象直接从其...

凯奥斯
2013/04/08
0
0
JavaScript 中的继承:ES3、ES5 和 ES6

选择一种继承方式 JavaScript 是一门动态语言,动态意味着高灵活性,而这尤其可以体现在继承上面。JavaScript 中的继承有很多种实现方式,可以分成下面四类: Mixin 模式,即属性混入,从一个...

天方夜
07/04
0
0
精读《JS 引擎基础之 Shapes and Inline Caches》

1 引言 本期精读的文章是:JS 引擎基础之 Shapes and Inline Caches 一起了解下 JS 引擎是如何运作的吧! JS 的运作机制可以分为 AST 分析、引擎执行两个步骤: JS 源码通过 parser(分析器)...

黄子毅
06/25
0
0
Javascript实现页面跳转的几种方式分享

这篇文章介绍了Javascript实现页面跳转的几种方式,有需要的朋友可以参考一 下 - 第一种: 复制代码 代码如下: <script language="javascript" type="text/javascript"> window.location.hre...

夏日晚晴天
2013/10/26
0
2
的一个小技巧

使用javascript的时候,通常我们会通过类似: <a href="#" onclick="javascript:方法">提交</a> 的方式,通过一个伪链接来调用javascript方法.这种方法有一个问题是:虽然点击该链接的时候不会跳...

wangwenya
2014/05/25
0
0
JavaScript核心概念归纳整理

原文出处: 熊俊漉 JavaScript语言本身是一个庞大而复杂的知识体系,复杂程度不低于任何一门后端语言,本文针对JavaScript语言的核心概念进行简单的梳理,对应的每个知识点仅仅点到为止,不作...

音乐宇Code
05/27
0
0
用通俗易懂的语言介绍JavaScript原型

原型(prototype)是每个JavaScript开发人员必须理解的基本概念,本文的目标是通俗而又详细地解释JavaScript的原型。如果你读完这篇博文以后还是不理解JavaScript的原型,请将你的问题写在下...

gsbhzh
2014/10/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

StringUtils类中isEmpty与isBlank的区别

org.apache.commons.lang.StringUtils类提供了String的常用操作,最为常用的判空有如下两种isEmpty(String str)和isBlank(String str)。 StringUtils.isEmpty(String str) 判断某字符串是否为...

说回答
12分钟前
0
0
react native使用redux快速上手

先看个简单demo //app.jsimport React, {Component} from 'react';import {StyleSheet, Button, View} from 'react-native';import TestView from './src/testView'export default......

燕归南
14分钟前
0
0
页面输出JSON格式数据

package com.sysware.utils;import java.io.IOException;import javax.servlet.ServletResponse;import org.apache.log4j.Logger;import com.sysware.SyswareConstant;pub......

AK灬
35分钟前
0
0
springCloud-2.搭建Eureka Client的使用

1.使用IDEA,Spring Initializr创建 2.填写项目资料 3.选择spring boot版本,插件选择Cloud Discovery→Eureka Discovery 4.选择保存地址 5.修改application.yml eureka: client: s...

贺小康
38分钟前
0
0
CenOS 6.5 RPM 安装 elasticsearch 6.3.1

下载 wget --no-check-certificate https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.1.rpm...

阿白
41分钟前
0
0
1.4 创建虚拟机&1.5 安装CentOS7&1.6 配置ip(上)&1.7 配置ip(下)

1.4 创建虚拟机 知识点 虚拟机网络链接模式 桥连 直接将虚拟网卡桥接到一个物理网卡上面。需要手工为虚拟系统配置IP地址、子网掩码,而且还要和宿主机器处于同一网段,这样虚拟系统才能和宿主...

小丑鱼00
47分钟前
0
0
TrustAsia(亚洲诚信)助力看雪2018安全开发者峰会

2018年7月21日,看雪2018安全开发者峰会在北京国家会议中心圆满落下帷幕。拥有18年悠久历史的老牌安全技术社区——看雪学院联手国内最大开发者社区CSDN,汇聚业内顶尖的安全开发者和技术专家...

亚洲诚信
49分钟前
0
0
Spring注解介绍

@Resource、@AutoWired、@Qualifier 都用来注入对象。其中@Resource可以以 name 或 type 方式注入,@AutoWired只能以 type 方式注入,@Qualifier 只能以 name 方式注入。 但它们有一些细微区...

lqlm
59分钟前
0
0
32位汇编在64位Ubuntu上的汇编和连接

本教程使用的操作系统是Ubuntu Linux 18.04 LTS版本,汇编器是GNU AS(简称as),连接器是GNU LD(简称ld)。 以下是一段用于检测CPU品牌的汇编小程序(cpuid2.s): .section .dataoutput...

ryanliue
今天
0
0
CentOS系统启动报错Failed to mount /sysroot解决方法

xfs_repair -v -L /dev/dm-0

Mr_Tea伯奕
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部