zoukankan      html  css  js  c++  java
  • 为对象扩展原型方法要注意的坑

    JavaScript里一切都是对象,这句话估计你已经听腻了。对象有个prototype属性可以用来动态扩展属性和方法,估计你也玩得如鱼得水了。

    那么问题来了:

    如果我想为任意类型的对象扩展一个getType方法,用来判断对象自身的类型到底是Boolean、Number、String、Array、Object,还是null、undefined,这个方法到底是写成下面这种独立的函数形式好呢?还是给对象的prototype扩展一个getType方法好呢?

        //判断对象的数据类型 ——  独立函数实现
        function getType(obj){
            var typeStr = Object.prototype.toString.call(obj).split(" ")[1];
            return typeStr.substr(0,typeStr.length-1);
        }
        //判断对象的数据类型 —— 原型扩展实现
        Object.prototype.getType = function(){
            var typeStr = Object.prototype.toString.call(this).split(" ")[1];
            return typeStr.substr(0,typeStr.length-1);
        }

    看起来好像是原型扩展实现得好,直接obj.getType(),不要一个参数,多爽。

    如果你决定使用原型扩展实现,那么恭喜你!你立刻就会遇到这个:

    独立实现虽然调用的形式getType(obj)丑点,但是稳啊:

     所以做人要低调,还是不要装逼的好。

  • 相关阅读:
    pytest框架运用
    unitTest学习
    发送邮件
    python 连接远程服务器,修改时间
    Redis基础
    django 知识点扩展
    ACM 题目 1487: [蓝桥杯][算法提高VIP]不同单词个数统计
    Leetcode 面试题 08.01. 三步问题
    Leetocode 198. 打家劫舍
    Leetcode 121. 买卖股票的最佳时机
  • 原文地址:https://www.cnblogs.com/macliu/p/9378451.html
Copyright © 2011-2022 走看看