美文网首页
原生JS(类的扩充和类型检验)

原生JS(类的扩充和类型检验)

作者: HelloJames | 来源:发表于2019-01-01 19:47 被阅读16次

扩充类的方法:

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( /function\s([^(])(/)[1];
  }

相关文章

  • 原生JS(类的扩充和类型检验)

    扩充类的方法: 1、向原型对象上添加方法或属性。例如:Number.prototype.cl = function...

  • js常用的遍历方法

    js原生用法数组类型 输出如下: 对象类型 输出如下: 类数组类型 输出如下: jQuery中$.each()方法...

  • 原生js

    原生JS学习笔记1——基本数据类型和运算符 js的背景知识介绍,js的引入方式,js的变量及运算符 原生JS学习笔...

  • JavaScript语言精粹(重读三)

    接上篇函数返回 异常 扩充类型的功能 有点像iOS中的分类 js允许给基本类型扩充功能。通过给Object的pro...

  • 2019-05-17 造轮子

    标准库的扩充 underscore.js 扩充了 Array 和 Object 相关 API moment.js ...

  • js数据类型

    JS基本数据类型和引用数据类型(JS 基本数据类型和引用数据类型的区别及浅拷贝和深拷贝) 再讲 js 的基本数据类...

  • Java常用数据类型检验工具类

    Java 常用数据类型检验工具类

  • Web前端必知篇:原型链的讲解

    js中的数据类型 js中的数据类型有两种,1是基本数据类型,2是引用数据类型。引用数据类型又可分为原生引用类型和自...

  • 类型

    JS的数据类型分为两类:原始类型(primitive type)和对象类型(Objsct type)。 原始类型 ...

  • Spring IOC源码解析(03)ResolvableType

    前言 在JDK原生类库里面,Type总共有5种类型,分别是:原始类型、参数化类型、泛型数组类型、类型变量和通配符类...

网友评论

      本文标题:原生JS(类的扩充和类型检验)

      本文链接:https://www.haomeiwen.com/subject/idefqftx.html