面向对象(九)扩展内置对象

title: 面向对象(九)扩展内置对象
date: # 文章生成时间,一般不改
categories: # 文章分类目录,可省略
- 面向对象
tags: # 文章标签,可省略
- 面向对象
- 基于原型面向对象的继承 # 个数不限,单个可直接跟在 tags 后面


扩展内置对象
需求:在数组上添加一个属性和方法
实现:利用对象的动态特性添加成员(属性/方法)

方式一 直接在原型上扩展内置对象

<script>
    var arr = ["1", "2", "3"];
    console.log(arr);

    Array.prototype.des = "数组的描述信息";
    Array.prototype.logDes = function(){
        console.log("数组logDes");
    }

    for(var k in arr){
        console.log(k,arr[k]);
    }
    /*
     0 1
     1 2
     2 3
     des 数组的描述信息
     logDes function (){
        console.log("数组logDes");
     }
    */
</script>

注意:在扩展内置构造函数的时候不要使用上面的方法
是因为原型对象上面的属性和方法会被所有的对象共享,可能会出现一莫名其妙的问题
如果直接在原型对象上添加属性和方法,那么很可能会被覆盖

方式二 安全的扩展内置对象

核心过程
01 提供一个构造函数(自定义)
02 设置构造函数的原型对象为内置构造函数创建出来的对象

<script>
    //Array
    function MyArray(){};
    //设置原型对象
    MyArray.prototype = new Array();
    MyArray.prototype.des = "描述信息";
    MyArray.prototype.logDes = function(){
        console.log(this.des);
    }

    //使用自己的构造函数来创建对象
    var myArr01 = new MyArray();
    var myArr02 = new MyArray();
    myArr01.push("123","abc");
    console.log(myArr01);
    console.log(myArr01.des);


    function OtherArray(){};
    OtherArray.prototype = new Array();
    OtherArray.prototype.des = "描述信息";
    OtherArray.prototype.logDes = function(){
        console.log("哈哈哈哈");
    }

    var otherArr01 = new OtherArray();
    var otherArr02 = new OtherArray();

    console.log(otherArr01.des);
    otherArr01.logDes();
</script>
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 博客内容:什么是面向对象为什么要面向对象面向对象编程的特性和原则理解对象属性创建对象继承 什么是面向对象 面向对象...
    _Dot912阅读 1,590评论 3赞 12
  • 1.继承(接口继承和实现继承) 继承是 OO 语言中的一个最为人津津乐道的概念。许多 OO 语言都支持两种继承方式...
    believedream阅读 1,099评论 0赞 3
  • 大一就快过去了,好快好快,真的!我就感觉我像是刚进来几个月一样,只是少了些许的新鲜感,多了几段回忆。它或深或淡,...
    心伤人阅读 436评论 2赞 0
  • 我家里有只小花狗,它的名字叫旺财,它在狗窝里睡觉,在碗里吃东西,在草丛里玩耍,在一个木桶里洗澡!
    古月汐_9a31阅读 222评论 0赞 0
  • 又想见他又不想见他的心情真糟糕。 早晨,小全已经在梳妆台前踌躇了好久了,甚至想也许可以请个假,躲开今天新经理迎接洗...
    李西柚李阅读 258评论 0赞 0

友情链接更多精彩内容