`

Javascript 识别对象的类型

 
阅读更多
/*
 *以字符串形式返回值的类型
 */
function type(o){
	var t,c,n;//type, class, name
	if(o===null)return 'null';
	if(o!==o)return 'nan';
	//如果typeof值不是object,返回它的值
	//可以识别出原始值的类型和函数
	if((t=typeof(o))!=='object') return t;
	//如果classof值不是Object,返回它的值
	//可以识别出大多数的内置对象
	if((c=classof(o))!=='Object') return c;
	//如果构造函数的名字存在的话,发挥它
	if(o.constructor && trypeof(o.constructor ==='function') &&
			(n=o.constructor.getName())) return n;
	//其它类型无法识别,返回Object
	return 'object';
}

//返回对象的类
function classof(o){
	return Object.prototype.toString.call(o).slice(8,-1);
}

//返回对象的名字
Function.prototype.getName=function(){  
    //如果函数中有name属性就返回name的值,否则取'function'和'('之间的字符  
    return this.name || this.toString().match('/function\s*([^()*]\(')[1];   
}

document.writeln('fff');
分享到:
评论

相关推荐

    JavaScript中判断对象类型的几种方法总结

    JavaScript中判断对象类型的常见方法包括`typeof`运算符、`instanceof`运算符以及利用对象的`constructor`属性。每种方法都有其特定的应用场景和限制。 1. `typeof`运算符: `typeof`是一种一元运算符,用于检测...

    javascript面向对象学习笔记

    这种模式简单易用,但存在一个问题,即创建的对象类型识别困难,它们都被识别为基本的Object类型。 接着是构造函数模式,它解决了对象类型识别的问题。通过`new`关键字和构造函数,我们可以创建特定类型的实例,如...

    JavaScript 面向对象与原型

    - 构造函数:使用构造函数创建特定类型的对象,`this`关键字用于指向新创建的对象,`new`操作符确保了对象的实例化。构造函数解决了工厂模式的对象识别问题,但每个实例的方法都会在内存中重复。 3. 构造函数的...

    JavaScript对象模型-执行模型

    JavaScript是一种基于原型的动态类型语言,其对象模型是其核心特性之一。本文将深入探讨JavaScript的对象模型和执行模型,以及它们如何影响代码的运行。 ### JavaScript对象模型 在JavaScript中,对象是由键值对...

    Javascript面向对象设计一 工厂模式.docx

    尽管工厂模式在一定程度上解决了对象创建的复用问题,但它并没有提供识别对象类型的方法。在上述示例中,`Jim`和`Sun`都是由`createEmployee`创建的,但无法直接判断它们属于哪个类型。为了解决这个问题,可以引入...

    在javascript中创建对象的各种模式解析

    与工厂模式不同的是,构造函数模式可以保证新创建的对象是特定类型的实例,可以通过constructor属性或者instanceof操作符来识别对象的类型。但是,构造函数模式也有一个重要的缺陷,那就是在构造函数中定义的方法会...

    浅谈JavaScript 标准对象_.docx

    包装对象是JavaScript中的一个特性,它们为基本类型提供了对象的接口。例如,`Number`、`Boolean`和`String`都有对应的包装构造函数。通过`new`关键字,我们可以创建这些包装对象,但这样做并不推荐,因为它们与原始...

    10JavaScript浏览器对象模型BOM.docx

    虽然某些属性可能因隐私问题而不再准确,但`navigator.userAgent`仍然是识别浏览器类型和版本的常见方法。通过比较这个字符串,开发者可以检测用户使用的浏览器类型,例如Firefox、Chrome或Internet Explorer。 3. ...

    JavaScript面对对象程序设计教程_.docx

    - **优点**: 每个实例都拥有自己的属性副本,易于识别对象类型。 - **缺点**: 属性会被重复创建,占用更多内存空间。 - **原型模式**: - **定义**: 利用对象的原型来实现继承,从而共享属性和方法。 - **示例**...

    JavaScript[对象.属性]集锦

    `LANGUAGE`属性定义了脚本语言类型,通常是"JavaScript",而`SRC`属性则指定了一个外部.js文件的URL,使得脚本可以从外部文件中加载。 `windows`对象是每个HTML文档的顶层对象,它包含了多个重要的属性和方法。例如...

    javascript Event对象详解

    JavaScript中的Event对象是事件处理的核心部分,它包含了与事件相关的所有信息,如事件类型、触发事件的元素、鼠标和键盘的状态等。以下是对Event对象及其重要属性的详细解释: 1. **altKey**:这个属性用于检查...

    JavaScript之自定义类型

    但工厂模式同样有一个问题:它无法直观地识别出对象的类型,即我们无法知道由工厂函数创建的对象属于哪种特定的构造函数。 示例代码: ```javascript function createPerson(name, age) { var person = new Object...

    JavaScript语法和对象速查手册 .陈冠军.扫描版

    对象类型则是指由用户自定义或由JavaScript引擎创建的复杂类型,如对象(Object)、数组(Array)、函数(Function)等。 变量声明主要有两种方式:使用var关键字,以及ES6引入的let和const。var声明的变量存在变量...

    紧凑的、基于对象的脚本语言——JavaScript.pdf

    本文系统地介绍了 JavaScript 的特点、基本数据类型、语句、函数、对象、库对象模型和事件。 JavaScript 的特点包括: * 紧凑的、基于对象的脚本语言 * 可识别并交互处理诸如揿击鼠标、输人文字等操作 * 基于对象...

    JavaScript之Blob对象类型的具体使用方法

    在Web开发中,Blob对象是一种用于存储二进制数据的对象类型,它代表了不可变的、原始数据的类文件对象。Blob对象最初的概念来源于数据库系统,用于存储如图片、声音或可执行程序等大型二进制数据。在JavaScript中,...

    JavaScript数据类型知识点总结及基础类型的使用方法.docx

    JavaScript 中的数据类型是指在编程语言中对常用的各种数据类型进行明确的划分,以便让计算机正确的识别和处理不同的数据类型。在 JavaScript 中,常用的数据类型有七种:数字(Number)、字符串(String)、布尔...

    javascript使用Blob对象实现的下载文件操作示例

    在JavaScript中,Blob对象用于表示不可变的原始数据,它不是JavaScript的内置数据类型,而是用来处理二进制数据的一种方式。Blob对象是File对象的基类,File对象则专门用于处理用户系统上的文件。Blob对象可以接收一...

    JavaScript的运行时类型检查器

    "JavaScript的运行时类型检查器"就是这种技术的体现,它可以在代码执行时检测变量、参数和对象属性的类型,从而提供更稳健的代码。 "babel-plugin-runtyper-master"是一个与Babel插件相关的项目,Babel是JavaScript...

    一道面试题引发的对javascript类型转换的思考

    在JavaScript中,存在着多种类型,包括原始类型和对象类型。原始类型主要包括Number、String、Boolean、Undefined和Null,而对象类型则包括Function、Array、Date、RegExp等。在进行类型转换时,不同类型的数据会...

    javascript中的数据类型检测方法详解.docx

    除此之外,像 jQuery 这样的库提供了额外的工具,如 `jQuery.isArray()`,`jQuery.isEmptyObject()`,`jQuery.isFunction()` 和 `jQuery.isNumeric()`,它们可以帮助我们更准确地识别对象的类型。 在实际编程中,...

Global site tag (gtag.js) - Google Analytics