`
haibin369
  • 浏览: 58923 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JavaScript对象的类型转换

阅读更多

在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)

 

1
1
分享到:
评论

相关推荐

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

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

    JavaScript强制类型转换和隐式类型转换操作示例

    本文实例讲述了JavaScript强制类型转换和隐式类型转换。分享给大家供大家参考,具体如下: 在JavaScript中声明变量不需指定类型, 对变量赋值也没有类型检查,同时JavaScript允许隐式类型转换。这些特征说明...

    文章目录 一、javaScript 的几种数据类型 1、数字类型 2、字符串 3、布尔型 4、数组 5、null 和 undef

    JavaScript 的数据类型有数字、字符串、布尔型、对象类型、数组、null 和 undefined。 1、数字类型 JavaScript 中的数字类型指整数和浮点数,不刻意区分二者。 JavaScript 还支持16进制的整数,在所要表示的16进制...

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

    类型转换可以分为隐式转换和显式转换,所谓隐式转换即程序在运行时进行的自动转换,显式转换则是人为的对类型进行强制转换。Javascript的变量是松散类型的,它可以存储Javascript支持的任何数据类型,其变量的类型可以...

    1902易海滔01JavaScript数据类型.docx

    字面量、变量、标识符 JavaScript的6种数据类型: 基本数据类型:String 字符串类型 Number数值类型 Boolean 布尔类型 ...JavaScript数据的强制类型转换 主要是将其他数据类型转换为String Number Boolean。

    coerce-input:将值强制转换为JavaScript对象类型(如果有)

    将值强制转换为JavaScript对象类型(如果有) 要求 可以通过NPM安装NodeJS开发依赖项... npm install 注意仅当添加功能和/或修复错误时,才需要NPM。 在其他项目中不存在基于NPM的依赖关系来...

    javascript的详细介绍

    JavaScript的编写方式 类型转换 内置对象 浏览器对象 客户端JavaScript

    老生常谈javascript的类型转换

    伪对象:javascript是一门很有意思的语言,即便是基本类型,也是伪对象,所以他们都有属性和方法。 变量a的类型是字符串,通过调用其为伪对象的属性length获取其长度 。 [removed] var a="hello javascript"; ...

    源文件程序天下JAVASCRIPT实例自学手册

    4.2 JavaScript对象的生成 4.2.1 HTML文档结构 4.2.2 DOM框架 4.2.3 顶级对象之间的关系 4.2.4 浏览器载入文档时对象的生成 4.3 JavaScript核心对象 4.4 文档对象的引用 4.4.1 通过对象位置访问文档对象 4.4.2 通过...

    JavaScript权威指南-第六版

     3.8 类型转换48  3.9 变量声明55  3.10 变量作用域56  第4章 表达式和运算符60  4.1 原始表达式60  4.2 对象和数组的初始化表达式61  4.3 函数定义表达式62  4.4 属性访问表达式63  4.5 调用表达式64  ...

    JavaScript详解(第2版)

    数据类型转换   5.3.1 parseInt()函数   5.3.2 parseFloat()函数   5.3.3 eval()函数   5.4 特殊运算符   5.5 应知应会   练习   第6章 条件选择   6.1 控制结构、块及复合语句   ...

    Javascript 类型转换、封闭函数及常见内置对象操作示例

    本文实例讲述了Javascript 类型转换、封闭函数及常见内置对象。分享给大家供大家参考,具体如下: Javascript组成 1、ECMAscript javascript的语法(变量、函数、循环语句等语法) 2、DOM 文档对象模型 操作html和...

    json-scriptify:将javascript对象转换为脚本

    将javascript对象转换为脚本 该模块的主要目的是从一个对象生成一个可读且最小长度的脚本,该脚本在被评估时,将一个对象尽可能地返回到原始对象。 :warning: 注意:我们尚未实现安全的解析器。 因此,请勿使用此...

    100个直接可以拿来用的JavaScript实用功能代码片段(1-10)

    56、原生JavaScript全角半角转换,iCase: 0全到半,1半到全,其他不转化 57、原生JavaScript确认是否键盘有效输入值 58、原生JavaScript获取网页被卷去的位置 59、原生JavaScript另一种正则日期格式化函数+调用方法 ...

    WaltTing#JavaScript#JS数据类型转换1

    常见JS类型转换表值|to 字符串|to 数字|to 布尔值|to 对象补充:更多内容待更新。

    浅析JavaScript中的对象类型Object

    理解:Object类型是所有它的实例的基础,换句话说,Object类型所具有的任何属性和方法也同样存在于更具体的对象中。 Object的实例都具有以下属性和方法 1.Constructor:保存着用于创建当前对象的函数 2.hasOwnProperty...

    JavaScript权威指南(第6版)

    3.8 类型转换 3.9 变量声明 3.10 变量作用域 第4章 表达式和运算符 4.1 原始表达式 4.2 对象和数组的初始化表达式 4.3 函数定义表达式 4.4 属性访问表达式 4.5 调用表达式 4.6 对象创建表达式 4.7 运算符概述 4.8 ...

    Javascript 强制类型转换函数

    1. Boolean(value):把值转换成Boolean类型; 2. Nnumber(value):把值转换成数字(整型或浮点数); 3. String(value):把值转换成字符串。 我们先来看Boolean():在要转换的值为“至少有一字符的字符串”、“非0的...

    Javascript数组操作高级心得整理

    3. 对象类型转换 19 (1) 转换成字符串 19 (2) 转换成数字 20  parseInt() 20  parseFloat() 20 (3) 强制类型转换 20  Boolean() 函数 20  Number()函数 20  String() 函数 21 4. JavaScript常用对象 21 (1...

Global site tag (gtag.js) - Google Analytics