您的位置:首页 > Web前端 > JavaScript

javascript中一切皆对象?基本数据类型也是对象吗?

2017-01-03 16:57 225 查看
学习js经常看到这句话——Javascript里面所有的数据类型都是对象 。

1.我们知道js ES5中数据类型分为基本数据类型和复杂数据类型。

基本类型有5类,分别是null,undefined,number,string,boolen。

复杂数据类型是object;

2.基本数据类型又被成为值类型 ; 复杂数据类型又被成为引用类型;

3.是不是所有的数据类型都是对象?明显不是。只有复杂数据类型是对象。

4.举个栗子;

String.prototype.str=function()
{
return 'hello';
}
var str1=5;
str1 instanceof String //结果:false
typeof str1  	       //'string'
str1.str() 	       //hello 可以调用到String.prototype挂载的方法
var str2=new String('a_string');
typeof str2            //object
str2.str()             //hello
也可以调用到Number.prototype挂载的方法


所以,在不需要明确判断类型字符串的时候,其实用法上基本没区别。


区别在于,通过对象类型初始化的(typeof显示object) 可以挂载任意方法。而原始类型却不能。
str2.bb=function()
{
return 'bb'
}
str2.bb()   //bb
str1.bb=function(){
return 'bb'
}
str1.bb()  //Uncaught TypeError: str1.bb is not a function(…)

除了undefined 和 null 不能直接调用属性,其它的基本数据类型都可以直接调用属性,不存在则返回undefined

所以说js是基于对象的脚本语言。

5.另一个栗子;
var num = new Number(7);

console.log(num instanceof Number);  //true
console.log(typeof a);                            // "object"

var num = 7;

console.log(num instanceof Number ); //false
console.log(typeof num);                       //"number"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐