JavaScript原型链

<!doctype html>
<html lang="en">
<head>
    <title>&#x539F;&#x578B;</title>
    <script>
    window.onload = function(){
        //apply()  call()区别
        function Cat(name,color){   //猫对象
            this.name = name;
            this.color = color;
        };
        var cat = new Cat();
        var o = {};
        Cat.apply(o,['111','222']);  //Cat函数在O对象中执行
        o.name;//"111"
        //call
        function Cat(name,color){   //猫对象
            this.name = name;
            this.color = color;
        };
        var cat = new Cat();
        var o = {};
        Cat.call(o,'aaa','bbb');  //Cat函数在O对象中执行
        o.name;//"aaa"

        function Animal(){   //动物对象   父
            this.type = '动物'
        };
        Animal.prototype.type2='动物';
        function Cat(name,color){   //猫对象   子
            this.name = name;
            this.color = color;
        };
        Cat.prototype = Animal.prototype;
        var cat = new Cat("大明","黄色");   //实例化
        console.log(cat.type);

        function People() {
            this.name='sonia';
            this.sayName= function() {console.log(this.name)};
        };
        People.prototype.walk="walk";
        var p1=new People();
        p1.name="p1";
        p1.sayName= function() {console.log('p1')};
        var p2=new People();
        p2.name="p1";
        p2.sayName= function() {console.log('p2')};

        //原型链
        function F1(){
            this.name1='1'
        };
        function F2(){
            this.name2='2'
        };
        function F3(){
            this.name3='3'
        };
        F2.prototype = new F1();
        F3.prototype = new F2();
        var ff = new F3();
        console.log(ff.name2);
        //修改原型数据
        function F1(){
            //this.name1='1'
        };
        F1.prototype.name1 = 'f1';
        function F2(){
            this.name2='2'
        };
        function F3(){
            this.name3='3'
        };
        F2.prototype = new F1();
        F3.prototype = new F2();
        var ff = new F3();
        console.log(ff.__proto__.__proto__.__proto__.name1 = 'abc');
        console.log(F1.prototype);

        //删除原型数据
        function F1(){
            //this.name1='1'
        };
        F1.prototype.name1 = 'f1';
        function F2(){
            this.name2='2'
        };
        function F3(){
            this.name3='3'
        };
        F2.prototype = new F1();
        F3.prototype = new F2();
        var ff = new F3();
        delete ff.__proto__.__proto__.__proto__.name1;
        console.log(F1.prototype);

        //原型链    构造函数 /原型/实例 的关系
        //函数对象中有prototype   原型对象prototype里有constructor属性,指向原型对象所属的构造函数
        //对象都有__proto__属性  指向函数的原型对象
    }
    </script>
</head>
<body>

</body>
</html>

Original: https://www.cnblogs.com/Dewumu/p/14395357.html
Author: 德乌姆列特
Title: JavaScript原型链

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/606634/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • redis client-output-buffer-limit 设置

    Redis 缓存保护机制: 大小限制,当某一客户端缓冲区超过设定值后直接关闭连接 持续时间限制,某一客户端缓冲区持续一段时间占用过大空间时关闭连接 对于普通客户端来说,限制为0,也…

    Linux 2023年5月28日
    0119
  • SpringBoot + Vue + ElementUI 实现后台管理系统模板 — 后端篇(四): 整合阿里云 短信服务、整合 JWT 单点登录

    (1) 相关博文地址: SpringBoot + Vue + ElementUI 实现后台管理系统模板 — 前端篇(一):搭建基本环境:https://www.cnblogs.c…

    Linux 2023年6月11日
    0132
  • 根据两个向量计算它们之间的旋转矩阵

    一、简介 本文主要介绍通过给定的两个空间向量,计算出从一个向量旋转到另一个向量的旋转矩阵。 二、步骤 ① 假设两个向量分别为vectorBefore(x1,y1,z1), vect…

    Linux 2023年6月7日
    0130
  • 秒懂悲观、乐观锁、互斥、自旋锁、读写锁

    前言 生活中用到的锁,用途都比较简单粗暴,上锁基本是为了防止外人进来、电动车被偷等等。 但生活中也不是没有 BUG 的,比如加锁的电动车在「广西 – 窃·格瓦拉」面前,…

    Linux 2023年6月14日
    0136
  • 句柄过多导致SSH失败

    现象描述 scp文件的时候,突然有一个节点拷贝失败了。以为免密被修改了,结果一问说原因是:句柄过多。 以前这种情况接触较少,就顺带查了一下资料。 句柄的定义 这个标题隐含的一个前提…

    Linux 2023年6月8日
    0138
  • Ubuntu18.04 显卡驱动安装(解决各种疑难杂症)

    步骤 下载驱动 准备工作 进行安装 检查安装 下载驱动 首先我们需要去官网下载显卡驱动 打开浏览器,在百度搜索框中搜索:显卡驱动 下载 在 手动搜索驱动程序一栏,根据自己的显卡进行…

    Linux 2023年6月14日
    0139
  • 什么?Android上面跑Linux?

    镜像下载、域名解析、时间同步请点击阿里云开源镜像站 前言 众所周知,现在程序员因为工作、个人兴趣等对各种系统的需求越来越大,部分人电脑做的还是双系统。其中,比较常见的有各种模拟器、…

    Linux 2023年5月27日
    0140
  • WPF 修复 ContextMenu 在开启 PerMonitorV2 后所用 DPI 错误

    本文告诉大家如何修复 WPF 的 ContextMenu 在开启 PerMonitorV2 之后,在双屏不同的 DPI 的设备上,在副屏弹出的 ContextMenu 使用了主屏的…

    Linux 2023年6月6日
    0108
  • 原来这就是网络

    你是一台电脑,你的名字叫A,很久很久之前,你不与任何其他电脑相连接,孤苦伶仃。 直到有一天,你希望与另一台电脑B建立连接,于是你们各开了一个网口,用一根网线连接了起来。 用一根网线…

    Linux 2023年6月14日
    0134
  • muduo源码分析之muduo简单运用

    今天不先实现 muduo项目,我们先来看下 muduo库的基本使用,只有了解了如何用,才能在写代码的时候知道自己写的找个函数是干嘛的,实际上是怎么使用的这个函数。首先说简单点,就是…

    Linux 2023年6月13日
    0115
  • SQL中连接(JOIN)子句介绍

    本文主要介绍 SQL(Structured Query Language)中连接(JOIN)子句的相关知识,同时通过用法示例介绍连接的常见用法。 说明:本文的用法示例是面向 MyS…

    Linux 2023年6月13日
    0100
  • GT/s和Gbps的关系

    GT/s 和 Gbps 数据传输表示通过数字接口传递的数据量。 当用较多的数据位对原始数据进行编码时,有效数据传输量低于实际传输的数据位数。例如:PCIe串行总线采用10位数据对8…

    Linux 2023年6月7日
    0118
  • SpringBoot——Redis实现分布式集群Session共享

    1.添加pom.xml依赖 org.springframework.boot   spring-boot-starter-data-redis   org.springframew…

    Linux 2023年5月28日
    0121
  • MySQL日志管理之二进制日志

    二进制日志采用二进制格式(01)来存储日志信息(导致数据发生变化的SQL语句),二进制日志记录整个数据库的修改过程。 MySQL的二进制日志主要就是起一个备份的功能。二进制日志≈备…

    Linux 2023年6月7日
    0126
  • 数据结构001–数据结构概述

    数据结构概述: 程序 = 数据结构 + 算法 算法:一些计算方法,解决问题的流程/步骤(顺序、分支、循环……),通俗的说,算法相当于逻辑,小部分已经被人们发…

    Linux 2023年6月6日
    094
  • 【转】我是一个CPU:这个世界慢!死!了!

    简介 我经常听到人们说磁盘慢,网络很慢,这是从人类感知的角度来表达的。比如,把一个文件拷贝到硬盘上需要几分钟到几十分钟,足够我吃一顿饭;而从网上下载一部电影,有时需要几个小时,我可…

    Linux 2023年5月27日
    0128
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球