Javascript之一切皆为对象1
2016-02-21 11:09
465 查看
在javascript的世界里,有这么一句话,一切皆为对象。
但是这个对象,应该怎么理解呢?
OMG,难道值类型也是对象?!!
当然,不是。
准确地讲是对于“引用类型”而言。
那,在JavaScript的世界里,怎么区分“值类型”和“引用类型”呢?
哟呼,答案:typeof。
让我们一起写个demo,猜猜看typeofShow()会输出哪些结果。
运行上面代码,打开chrome调试,得下效果图,你猜对了么?
从上图,可以看出,除开“值类型”,typeof输出的其他都是function和object,即“引用类型”。
但是刚才不是说到,引用类型都是对象么。。那typeof function(){} 输出的怎么是function,而不是object呢?
function到底是不是对象呢?
答案:function也是对象的,不信,我们利用instanceof来检验检验。
下面是运行结果图
或者还记得函数function还有一种写法么,如下
var fn = new Function(“x”, “y”, “return x+ y ”);
嘿嘿,这会信了吧。
通常的对象,一般是利用键值对表示的,例如下面这样:
你会问,那数组和函数不也是对象吗,他们也可以这样表示咯?
当然不可以,但它们可以采用另一种形式。如函数,可以这样:
总之,在javascript的世界里,对象就是属性的集合。
咦,我勒个去,前面好像,有哪里不对?!!
既然function是对象,那为什么typeof function(){}要输出function,而不是object呢?
详情且听下回“Javascript之一切皆为对象2”。
但是这个对象,应该怎么理解呢?
OMG,难道值类型也是对象?!!
当然,不是。
准确地讲是对于“引用类型”而言。
那,在JavaScript的世界里,怎么区分“值类型”和“引用类型”呢?
哟呼,答案:typeof。
让我们一起写个demo,猜猜看typeofShow()会输出哪些结果。
<!DOCTYPE html> <head> <title>javascript</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> </head> <body> <script> function typeofShow(){ console.log( typeof x ); console.log( typeof 1 ); console.log( typeof '' ); console.log( typeof true ); console.log( typeof function(){} ); console.log( typeof [] ); console.log( typeof {} ); console.log( typeof null ); console.log( typeof new Number(1) ); } typeofShow(); </script> </body> </html>
运行上面代码,打开chrome调试,得下效果图,你猜对了么?
从上图,可以看出,除开“值类型”,typeof输出的其他都是function和object,即“引用类型”。
但是刚才不是说到,引用类型都是对象么。。那typeof function(){} 输出的怎么是function,而不是object呢?
function到底是不是对象呢?
答案:function也是对象的,不信,我们利用instanceof来检验检验。
<!DOCTYPE html> <head> <title>javascript</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> </head> <body> <script> function test(){}; console.log( test instanceof Object); </script> </body> </html>
下面是运行结果图
或者还记得函数function还有一种写法么,如下
var fn = new Function(“x”, “y”, “return x+ y ”);
嘿嘿,这会信了吧。
通常的对象,一般是利用键值对表示的,例如下面这样:
var obj = { one:[], two:'', three: function(){}, four:{ four1:'' } }
你会问,那数组和函数不也是对象吗,他们也可以这样表示咯?
当然不可以,但它们可以采用另一种形式。如函数,可以这样:
function fn(){ } fn.a=[]; fn.b=function(){}
总之,在javascript的世界里,对象就是属性的集合。
咦,我勒个去,前面好像,有哪里不对?!!
既然function是对象,那为什么typeof function(){}要输出function,而不是object呢?
详情且听下回“Javascript之一切皆为对象2”。
相关文章推荐
- jsp打印九九乘法表
- json数据格式
- js实现冒泡排序
- JSON简介以及用法汇总
- javaScript与MVC
- javascript实现计时器的简单方法
- JS中Eval解析JSON字符串的一个小问题
- JS事件绑定的方法
- 浏览器检测JS代码(兼容目前各大主流浏览器)
- Ajax 跨域请求 jsonp获取json数据
- js作用域和变量提升
- php课程---JavaScript改变HTML中的元素
- 【BZOJ 1013】 [JSOI2008]球形空间产生器sphere
- [JS]应用splice删除多元素时出现的坑
- JavaScript 笔记 11 - 数组(Array)对象
- 什么是作用域链,什么是原型链,它们的区别,在js中它们具体指什么?
- 浏览器检测JS代码(兼容目前各大主流浏览器)
- JS中Eval解析JSON字符串的一个小问题
- JSON简介以及用法汇总
- JavaScript编程学习技巧汇总