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)

大家都在看

  • 重载规则

    1、可重载的运算符 + – * / % ^ & | ~ ! = < > += -= *= /= %= ^= &= |= << >&gt…

    Linux 2023年6月13日
    0101
  • Redis 常用五种数据类型编码

    1.String 1.1 常用命令 (1)设置值 set key value [ex seconds] [px milliseconds] [nx|xx] set命令有几个选项: …

    Linux 2023年5月28日
    0108
  • python数据结构与算法(1)—时间复杂度

    一.数据结构基础 1.数据结构概念 就是一组数据在内存中的存储形式,也是对基本数据类型的一次封装 也是数据对象中数据元素之间的关系。 算法与数据结构的区别: 数据结构只是静态的描述…

    Linux 2023年6月6日
    084
  • Redis6 源码调式

    Redis6 源码调式 安装Cygwin 1、下载安装Cygwin 去Cygwin的官方网站http://www.cygwin.com/ window 64位请选择 setup-x…

    Linux 2023年5月28日
    0141
  • 出现 Expected 0 arguments but found 1 的bug原因

    问题:在给FileInputStream传入参数时报错 原以为是导错了包,结果试了几次都不行,最后才发现是项目名和这个方法名重复了,修改项目名就可以了! 红线处只是异常,抛出即可解…

    Linux 2023年6月7日
    0126
  • LeetCode-补充题9. 36进制加法

    题目来源 题目详情 36进制由0-9,a-z,共36个字符表示。 要求按照加法规则计算出任意两个36进制正整数的和,如1b + 2x = 48 (解释:47+105=152) 要求…

    Linux 2023年6月7日
    0117
  • 剑指offer计划29(动态规划困难)—java

    1.1、题目1 剑指 Offer 19. 正则表达式匹配 1.2、解法 动态规划后面再研究 1.3、代码 class Solution { public boolean isMat…

    Linux 2023年6月11日
    0115
  • Redis 内存模型

    前言 Redis是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说Redis是实现网站高并发不可或缺的一部分。 我们使用Redis时,会接触Redis的…

    Linux 2023年5月28日
    0133
  • redis开启远程访问

    redis默认只允许本地访问,要使redis可以远程访问可以修改redis.conf 打开redis.conf文件在 NETWORK部分有说明 By default, if no …

    Linux 2023年5月28日
    0191
  • 学习一下 Spring Security

    一、Spring Security 1、什么是 Spring Security? (1)基本认识Spring Security 是基于 Spring 框架,用于解决 Web 应用安…

    Linux 2023年6月11日
    0118
  • ServiceHub.DataWarehouseHost.exe内存泄漏问题的处理

    ServiceHub.DataWarehouseHost.exe内存泄漏问题的处理。 Visual Studio 2017的15.2版本在debug应用程序时,ServiceHub…

    Linux 2023年6月7日
    0124
  • CentOS 7 新系统 手动配置网络 简要步骤

    一、配置网卡文件 1.修改网卡文件进入网卡配置文件目录 2.查看网卡文件 CentOS中网卡文件一般为 ifcfg-ens* 这样的文件,多块网卡会有多个类似文件 3.编辑网卡文件…

    Linux 2023年6月8日
    093
  • 来的随笔

    感谢各位 posted @2022-01-07 12:08 三途河畔人 阅读(71 ) 评论() 编辑 Original: https://www.cnblogs.com/sthp…

    Linux 2023年6月7日
    0125
  • 03-MySQL事务

    数据库事务 1、事务特性 1.1、原子性 即不可分割性,事务要么全部被执行,要么就全部不被执行 1.2、一致性 事务的执行使得数据库从一种正确状态转换成另一种正确状态 1.3、隔离…

    Linux 2023年6月7日
    0104
  • Linux之Nginx模块扩展

    404. 抱歉,您访问的资源不存在。 可能是URL不正确,或者对应的内容已经被删除,或者处于隐私状态。 [En] It may be that the URL is incorre…

    Linux 2023年5月27日
    085
  • vi和vim文本编辑器

    vi和vim文本编辑器 vi和vim模式的相互切换 快捷键使用案例 拷贝当前行yy; 拷贝当前行向下的5行 5yy; 并粘贴(p) 删除当前行dd; 删除当前行向下的5行 5dd …

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