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

学习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"

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值