时间:2021-07-01 10:21:17 帮助过:33人阅读
结果为undefined
var str="这是一个基础字符串";
var length=str.length();
//当使用length()时,Javascript解释引擎会产生
//一个str的临时String对象,执行完后临时对象清除
三.如何判断数据类型
(1) typeof(鸡肋)
仅可检测出以下6种数据类型:number, string, boolean, undefined, object, function(注意!)
代码如下:结果为object
alert(typeof(null)); //
alert(typeof(a)); //a未赋值,
结果为0.55
function type(o) {
return (o === null) ? 'null' : typeof(o);
}
(2)instanceof
但对于复合数据类型(除了function),则全部返回object,无法通过typeof判断
可使用instanceof检测某个对象是不是另一个对象的实例,注意instanceof的右操作数必须为对象:
代码如下:结果为123
function Animal() {};
function Pig() {};
Pig.prototype = new Animal();
alert(new Pig() instanceof Animal); // true
instanceof不适合用来检测一个对象本身的类型
(3)constructor
代码如下:结果为true
alert(1.constructor); // 报错
var o = 1;
alert(o.constructor); // Number
o = null; // or undefined
alert(o.constructor); // 报错
alert({}.constructor); // Object
alert(true.constructor); // Boolean
(4)Object.toString()
代码如下:结果为678
function isArray(o) {
return Object.prototype.toString.call(o) === '[object Array]';
}
call和apply的区别:
它们都是Function.prototype的方法(针对方法的),它是Javascript引擎内在实现的。
实际上这两个的作用几乎是相同的,要注意的地方是call(thisObj[,arg1[, arg2[,)中的arg参数可以是变量,而apply([thisObj[,argArray]])中的参数为数组集合
方法是借给另一个对象的调用去完成任务,原理上是方法执行时上下文对象改变了.
(5)总结
代码如下:结果为"678"
var _toS = Object.prototype.toString,
_types = {
'undefined' : 'undefined',
'number' : 'number',
'boolean' : 'boolean',
'string' : 'string',
'[object Function]' : 'function',
'[object RegExp]' : 'regexp',
'[object Array]' : 'array',
'[object Date]' : 'date',
'[object Error]' : 'error'
};
function type(o) {
return _types[typeof o] || _types[_toS.call(o)] || (o ? 'object' : 'null');
}
四.数据类型转换
Javascript有两种数据类型的转换方法:
一种是将整个值从一种类型转换为另一种数据类型(称作基本数据类型转换),
另一种方法是从一个值中提取另一种类型的值,并完成转换工作。
基本数据类型转换的如以下三种方法:
1.转换为字符型:String(); 例:String(678)的
2.转换为数值型:Number(); 例:Number("678")的
3.转换为布尔型:Boolean(); 例:Boolean("aaa")的
从一个值中提取另一种类型的值的如以下方法:
1.提取字符串中的整数:parseInt(); 例:parseInt("123zhang")的
2.提取字符串中的浮点数:parseFloat(); 例:parseFloat("0.55zhang")的
s = (0.0000001).toString();
alert(parseInt(s));
最后得到1就不奇怪了。
使用parseInt必须记住里面参数是转换成字符串再做转换的。