`

JavaScript对象的类型转换

 
阅读更多

在JavaScript中,对象转换成基本数据类型或者字符串用到了toString() 方法和alueOf()方法。

 

将对象转换成字符串时:

1.调用对象的toString()方法,将对象转换成返回的字符串,如果方法返回其它基本数据类型,则会自动转换成字符串;

2.如果对象没有toString()方法,或方法返回的不是基本数据类型,那么以相同方式调用valueOf()方法;

3.同样,如果valueOf()方法不存在或者返回值不是基本数据类型,则提示错误(IE可能不会报错);

Js代码 复制代码 收藏代码
  1. //自定义函数(类)   
  2. function myObject(objectName)   
  3. {   
  4.     this.objectName = objectName;   
  5. }   
  6. var myObj = new myObject("MyObj");   
  7.   
  8. //正常情况,首先调用toString()方法   
  9. myObject.prototype.toString = function(){return 123;};   
  10. myObject.prototype.valueOf = function(){return 321;};   
  11. alert(myObj);   //结果为123   
  12.   
  13. //toString()方法返回不正确类型,调用valueOf()方法   
  14. myObject.prototype.toString = function(){return new Date();};   
  15. myObject.prototype.valueOf = function(){return 321;};   
  16. alert(myObj);   //结果为321   
  17.   
  18. //toString()方法不存在,valueOf()方法返回不正确类型   
  19. myObject.prototype.toString = undefined;   
  20. myObject.prototype.valueOf = function(){return new Date();};   
  21. alert(myObj);   //提示错误(IE8中不报错并提示[Object])  
//自定义函数(类)
function myObject(objectName)
{
	this.objectName = objectName;
}
var myObj = new myObject("MyObj");

//正常情况,首先调用toString()方法
myObject.prototype.toString = function(){return 123;};
myObject.prototype.valueOf = function(){return 321;};
alert(myObj);	//结果为123

//toString()方法返回不正确类型,调用valueOf()方法
myObject.prototype.toString = function(){return new Date();};
myObject.prototype.valueOf = function(){return 321;};
alert(myObj);	//结果为321

//toString()方法不存在,valueOf()方法返回不正确类型
myObject.prototype.toString = undefined;
myObject.prototype.valueOf = function(){return new Date();};
alert(myObj);	//提示错误(IE8中不报错并提示[Object])

 

类似的,将对象转换成基本数据类型时也会作相应处理,但是会先调用valueOf() 函数而不是toString()。

将对象转换成基本数据类型时:

1.调用对象的valueOf() 方法,将对象转换成返回的基本数据类型;

2.如果对象没有valueOf() 方法,或方法返回的不是基本数据类型,那么以相同方式调用toString()方法;

3.同样,如果toString()方法不存在或者返回值不是基本数据类型,则提示错误;

 

Js代码 复制代码 收藏代码
  1. //自定义函数(类)   
  2. function myObject(objectName)   
  3. {   
  4.     this.objectName = objectName;   
  5. }   
  6. var myObj = new myObject("MyObj");   
  7.   
  8. //正常情况,首先调用valueOf()方法   
  9. myObject.prototype.toString = function(){return 123;};   
  10. myObject.prototype.valueOf = function(){return 321;};   
  11. alert(myObj*2);         //结果为642   
  12.   
  13. //valueOf()方法返回不正确类型,调用toString()方法   
  14. myObject.prototype.toString = function(){return 123;};   
  15. myObject.prototype.valueOf = function(){return new Date();};   
  16. alert(myObj*2);         //结果为246   
  17.   
  18. //toString()方法不存在,valueOf()方法返回不正确类型   
  19. myObject.prototype.toString = undefined;   
  20. myObject.prototype.valueOf = function(){return new Date();};   
  21. alert(myObj*2);         //提示错误  
//自定义函数(类)
function myObject(objectName)
{
	this.objectName = objectName;
}
var myObj = new myObject("MyObj");

//正常情况,首先调用valueOf()方法
myObject.prototype.toString = function(){return 123;};
myObject.prototype.valueOf = function(){return 321;};
alert(myObj*2);			//结果为642

//valueOf()方法返回不正确类型,调用toString()方法
myObject.prototype.toString = function(){return 123;};
myObject.prototype.valueOf = function(){return new Date();};
alert(myObj*2);			//结果为246

//toString()方法不存在,valueOf()方法返回不正确类型
myObject.prototype.toString = undefined;
myObject.prototype.valueOf = function(){return new Date();};
alert(myObj*2);			//提示错误

 

 当对象操作设计“+”运算符时就要特别注意,因为“+”既能进行算数操作,也能进行字符串拼接操作。

1.当“+”的两个操作数有对象类型时,先把对象根据上面的规则转换成基本数据类型;

2.转换完的两个操作数如果有一个是字符串类型的,则把另一个操作数转换成字符串;

3.否则,把两个操作数都转换成数值类型(或NaN),进行相加操作。

 

Js代码 复制代码 收藏代码
  1. //自定义函数(类)   
  2. function myObject(objectName)   
  3. {   
  4.     this.objectName = objectName;   
  5. }   
  6. var myObj = new myObject("MyObj");   
  7.   
  8. //正常情况,首先调用valueOf()方法,返回数字   
  9. myObject.prototype.toString = function(){return 123;};   
  10. myObject.prototype.valueOf = function(){return 321;};   
  11. alert(myObj + 1);           //结果为322(数值相加)   
  12. alert(myObj + "1");         //结果为3211(字符串拼接)   
  13.   
  14. //正常情况,首先调用valueOf()方法,返回字符串   
  15. myObject.prototype.toString = function(){return 123;};   
  16. myObject.prototype.valueOf = function(){return "321";};   
  17. alert(myObj + 1);           //结果为3211(字符串拼接)   
  18. alert(myObj + "1");         //结果为3211(字符串拼接)   
  19.   
  20. //valueOf()方法返回不正确类型,调用toString()方法,返回字符串   
  21. myObject.prototype.toString = function(){return "123";};   
  22. myObject.prototype.valueOf = function(){return new Date();};   
  23. alert(myObj + 1);           //结果为1231(字符串拼接)   
  24. alert(myObj + "1");         //结果为1231(字符串拼接)   
  25.   
  26. //toString()方法不存在,valueOf()方法返回不正确类型   
  27. myObject.prototype.toString = undefined;   
  28. myObject.prototype.valueOf = function(){return new Date();};   
  29. alert(myObj + 1);           //提示错误(IE8不报错,并提示undefined)   
  30. alert(myObj + "1");         //提示错误(IE8不报错,并提示undefined)
分享到:
评论

相关推荐

    javascript对象转换成json

    在JavaScript中,我们可以使用内置的`JSON.stringify()`方法将JavaScript对象转换为JSON字符串。 ### JSON.stringify()方法 `JSON.stringify()`是JavaScript中的全局函数,用于将JavaScript值转换为JSON字符串。它...

    Javascript的数据类型转换

    以下是对JavaScript中数据类型转换的详细说明: 1. `parseInt()` 函数:这个函数用于将字符串转化为整型。它会尝试解析字符串,从开头开始找到第一个数字,并将其转换为整数。如果字符串的第一位不是数字,`...

    JavaScript对象模型

    - **Object**: 对象类型的用户接口。 - **Boolean**、**Number**、**String**: 这些类型提供了对应的对象包装器,使得简单数据类型可以转换为对象,以便进行更复杂的操作。 - **Date**、**Array**、**RegExp**: 这些...

    JavaScript对象定义

    JavaScript对象定义是编程语言中的核心概念,它在Web开发中起着至关重要的作用。JavaScript是一种基于原型的对象导向语言,它的对象定义方式具有独特的灵活性。在本文中,我们将深入探讨JavaScript对象的定义、创建...

    Javascript类型转换的规则实例解析

    JavaScript类型转换是编程中非常重要的一个概念,它描述了在运算过程中,不同数据类型之间的自动或手动转换行为。JavaScript语言是动态类型的,这意味着你可以在运行时改变变量所存储值的类型,而这正是类型转换的...

    JavaScript对象经典小册 chm

    1. 对象概述:JavaScript对象是一种数据结构,它由键值对组成,键可以是字符串或者符号,值可以是任何类型的数据。对象是通过大括号{}创建的,键和值之间用冒号分隔,键值对之间用逗号分隔。 2. 属性与方法:对象的...

    JavaScript对象模型-执行模型

    JavaScript对象模型(Object Model)和执行模型是理解JavaScript工作原理的关键概念。JavaScript是一种基于原型的动态类型语言,其对象模型是其核心特性之一。本文将深入探讨JavaScript的对象模型和执行模型,以及...

    javascript最常用数据类型转换(最全).doc

    JavaScript 数据类型转换详解 JavaScript 中有多种数据类型,包括数值类型、字符串类型、布尔类型等。这些类型之间可以进行转换,以下是 JavaScript 中最常用的数据类型转换方法。 一、转为字符串 在 JavaScript ...

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

    JavaScript中的类型转换是处理不同类型数据时需要进行的一种操作,它在编程中扮演着重要的角色。在JavaScript中,存在着多种类型,包括原始类型和对象类型。原始类型主要包括Number、String、Boolean、Undefined和...

    JavaScript隐式类型转换_.docx

    JavaScript中的隐式类型转换是其弱类型特性的重要体现,它允许不同数据类型的值在运算时进行自动转换,但这也可能导致一些意料之外的结果。在JavaScript中,数据类型包括字符串(String)、数字(Number)、布尔(Boolean...

    javascript对象参考手册

    16. **类型转换**:讲解JavaScript的动态类型系统,以及隐式和显式的类型转换。 17. **性能优化**:提供关于对象使用和内存管理的最佳实践,以提升代码效率。 18. **错误处理与调试**:指导如何在代码中有效地捕捉...

    面向对象javascript

    函数在JavaScript中是一种特殊的对象类型,可以作为值赋给变量、作为参数传递给另一个函数、或作为其它函数的返回值。函数对象可以具有arguments、caller和callee等属性。 在JavaScript中,我们可以使用函数的...

    纯javascript实现json与对象的互相转换项目

    本项目专注于纯JavaScript实现JSON(JavaScript Object Notation)与JavaScript对象之间的互相转换,这对于数据的存储、传输以及序列化至关重要。JSON作为一种轻量级的数据交换格式,因其易读易写、机器可读性高而被...

    JavaScript核心对象参考手册

    Number对象用于处理数值类型,虽然在JavaScript中数字是基本类型,但Number对象提供了一些有用的静态方法,如`isNaN()`检查是否为非数字值,`parseInt()`和`parseFloat()`用于从字符串中解析数字,以及`toFixed()`...

    一种JavaScript矢量类型带有GLSL启发式转换

    GLSL启发式转换是将这些JavaScript矢量类型转换为GLSL语言的过程,目的是在GPU上运行,利用其并行计算能力。GLSL是专为OpenGL设计的,用于定义顶点着色器和片段着色器,它们在图形渲染管线的不同阶段运行。在...

    javascript中数组、对象

    文档"Javascript数组操作整理.doc"可能包含了对数组常见操作的详细总结,如遍历方法(`for`循环、`forEach`、`map`等)、查找方法(`indexOf`、`find`、`filter`等)、排序方法(`sort`)、转换方法(`concat`、`...

    JavaScript 动态网页实例 - 数据类型转换.rar

    类型转换是网页编程不可或缺的内容,本文先介绍自动类型转换,接着是强制性的显式类型转换,最后如何将基本数据类型提升为对象。 JavaScript的数据类型分为基本数据类型和复合数据类型。复合数据类型主要有对象、...

Global site tag (gtag.js) - Google Analytics