在JavaScript中,对象转换成基本数据类型或者字符串用到了toString() 方法和alueOf()方法。
将对象转换成字符串时:
1.调用对象的toString()方法,将对象转换成返回的字符串,如果方法返回其它基本数据类型,则会自动转换成字符串;
2.如果对象没有toString()方法,或方法返回的不是基本数据类型,那么以相同方式调用valueOf()方法;
3.同样,如果valueOf()方法不存在或者返回值不是基本数据类型,则提示错误(IE可能不会报错);
//自定义函数(类)
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()方法不存在或者返回值不是基本数据类型,则提示错误;
//自定义函数(类)
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),进行相加操作。
//自定义函数(类)
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 + 1); //结果为322(数值相加)
alert(myObj + "1"); //结果为3211(字符串拼接)
//正常情况,首先调用valueOf()方法,返回字符串
myObject.prototype.toString = function(){return 123;};
myObject.prototype.valueOf = function(){return "321";};
alert(myObj + 1); //结果为3211(字符串拼接)
alert(myObj + "1"); //结果为3211(字符串拼接)
//valueOf()方法返回不正确类型,调用toString()方法,返回字符串
myObject.prototype.toString = function(){return "123";};
myObject.prototype.valueOf = function(){return new Date();};
alert(myObj + 1); //结果为1231(字符串拼接)
alert(myObj + "1"); //结果为1231(字符串拼接)
//toString()方法不存在,valueOf()方法返回不正确类型
myObject.prototype.toString = undefined;
myObject.prototype.valueOf = function(){return new Date();};
alert(myObj + 1); //提示错误(IE8不报错,并提示undefined)
alert(myObj + "1"); //提示错误(IE8不报错,并提示undefined)
分享到:
相关推荐
在JavaScript中,我们可以使用内置的`JSON.stringify()`方法将JavaScript对象转换为JSON字符串。 ### JSON.stringify()方法 `JSON.stringify()`是JavaScript中的全局函数,用于将JavaScript值转换为JSON字符串。它...
以下是对JavaScript中数据类型转换的详细说明: 1. `parseInt()` 函数:这个函数用于将字符串转化为整型。它会尝试解析字符串,从开头开始找到第一个数字,并将其转换为整数。如果字符串的第一位不是数字,`...
- **Object**: 对象类型的用户接口。 - **Boolean**、**Number**、**String**: 这些类型提供了对应的对象包装器,使得简单数据类型可以转换为对象,以便进行更复杂的操作。 - **Date**、**Array**、**RegExp**: 这些...
JavaScript对象定义是编程语言中的核心概念,它在Web开发中起着至关重要的作用。JavaScript是一种基于原型的对象导向语言,它的对象定义方式具有独特的灵活性。在本文中,我们将深入探讨JavaScript对象的定义、创建...
JavaScript类型转换是编程中非常重要的一个概念,它描述了在运算过程中,不同数据类型之间的自动或手动转换行为。JavaScript语言是动态类型的,这意味着你可以在运行时改变变量所存储值的类型,而这正是类型转换的...
1. 对象概述:JavaScript对象是一种数据结构,它由键值对组成,键可以是字符串或者符号,值可以是任何类型的数据。对象是通过大括号{}创建的,键和值之间用冒号分隔,键值对之间用逗号分隔。 2. 属性与方法:对象的...
JavaScript对象模型(Object Model)和执行模型是理解JavaScript工作原理的关键概念。JavaScript是一种基于原型的动态类型语言,其对象模型是其核心特性之一。本文将深入探讨JavaScript的对象模型和执行模型,以及...
JavaScript 数据类型转换详解 JavaScript 中有多种数据类型,包括数值类型、字符串类型、布尔类型等。这些类型之间可以进行转换,以下是 JavaScript 中最常用的数据类型转换方法。 一、转为字符串 在 JavaScript ...
JavaScript中的类型转换是处理不同类型数据时需要进行的一种操作,它在编程中扮演着重要的角色。在JavaScript中,存在着多种类型,包括原始类型和对象类型。原始类型主要包括Number、String、Boolean、Undefined和...
JavaScript中的隐式类型转换是其弱类型特性的重要体现,它允许不同数据类型的值在运算时进行自动转换,但这也可能导致一些意料之外的结果。在JavaScript中,数据类型包括字符串(String)、数字(Number)、布尔(Boolean...
16. **类型转换**:讲解JavaScript的动态类型系统,以及隐式和显式的类型转换。 17. **性能优化**:提供关于对象使用和内存管理的最佳实践,以提升代码效率。 18. **错误处理与调试**:指导如何在代码中有效地捕捉...
函数在JavaScript中是一种特殊的对象类型,可以作为值赋给变量、作为参数传递给另一个函数、或作为其它函数的返回值。函数对象可以具有arguments、caller和callee等属性。 在JavaScript中,我们可以使用函数的...
本项目专注于纯JavaScript实现JSON(JavaScript Object Notation)与JavaScript对象之间的互相转换,这对于数据的存储、传输以及序列化至关重要。JSON作为一种轻量级的数据交换格式,因其易读易写、机器可读性高而被...
Number对象用于处理数值类型,虽然在JavaScript中数字是基本类型,但Number对象提供了一些有用的静态方法,如`isNaN()`检查是否为非数字值,`parseInt()`和`parseFloat()`用于从字符串中解析数字,以及`toFixed()`...
GLSL启发式转换是将这些JavaScript矢量类型转换为GLSL语言的过程,目的是在GPU上运行,利用其并行计算能力。GLSL是专为OpenGL设计的,用于定义顶点着色器和片段着色器,它们在图形渲染管线的不同阶段运行。在...
文档"Javascript数组操作整理.doc"可能包含了对数组常见操作的详细总结,如遍历方法(`for`循环、`forEach`、`map`等)、查找方法(`indexOf`、`find`、`filter`等)、排序方法(`sort`)、转换方法(`concat`、`...
类型转换是网页编程不可或缺的内容,本文先介绍自动类型转换,接着是强制性的显式类型转换,最后如何将基本数据类型提升为对象。 JavaScript的数据类型分为基本数据类型和复合数据类型。复合数据类型主要有对象、...