zoukankan      html  css  js  c++  java
  • 原生JS(类的扩充和类型检验)

    扩充类的方法:
    
    1、向原型对象上添加方法或属性。例如:Number.prototype.cl = function(){};
    
      但这种做法并不推荐,因为ES5之前,无法将这些新添加的方法或属性设置为不可枚举的。他们可以在for/in循环中被遍历到
    
    2、使用ES5提供的扩展对象的方法:Object.definePropery()。
    
      在web浏览器环境下,可以通过Object.defineProperty()方法给HTMLElement.prototype添加方法,从而使表示HTML标记的所有对象可以继承该方法。但该方法尚未被普及,实用方面有限制
    
     
    
    类型检测:
    
    1、typeof关键字:无法检测对象的类型
    
    2、instanceof关键字和isPrototypeOf方法
    
      可以检测对象的继承关系,检测出在对象的原型链上是否存在某个特定的原型对象
    
      缺点:
    
        a、无法通过对象获得类名,只能检测对象是否属于指定的类名
    
        b、多窗口和有框架子页面的web应用中不兼容,因为每个窗口和框架子页面都具有单独的执行上下文,每个上下文都包含独立的全局变量和构造函数。
    
    3、constructor属性
    
      可以检测到对象的类名
    
      缺点:同instanceof关键字一样,无法兼容多窗口或框架子页面环境
    
    4、构造函数的名称(name属性)
    
      可以兼容多窗口或框架子页面
    
      缺点:构造函数的name属性并不是一个标准的属性,存在兼容性问题,解决方法是如果没有name属性,可以将构造函数转换成字符串然后提取函数名
    
      Function.prototype.getName = function(){
          if( "name" in this ) return this.name;
          return this.name = this.toString().match( /functions*([^(]*)(/)[1];
      }
  • 相关阅读:
    c语言字符串_续
    c语言中文件的操作
    Linux基础知识
    netstat
    wireshark 过滤规则
    常用cmd命令
    优化过的redis封装类
    二十三岁,新的起点
    计划看的书目
    [转载]爱上一个给予你正能量的人
  • 原文地址:https://www.cnblogs.com/czx521/p/6488760.html
Copyright © 2011-2022 走看看