Javascript之一切皆为对象1
在javascript的世界里,有这么一句话,一切皆为对象。
但是这个对象,应该怎么理解呢?
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”。
Javascript之一切皆为对象1的更多相关文章
- javascript之一切皆为对象3
在前面两个章节“Javascript之一切皆为对象1”和“Javascript之一切皆为对象2”中,曾提到: 1.“一切(引用类型)皆为对象” 2. “每个函数都有一个prototype” 3. “每 ...
- javascript之一切皆为对象2
其实呢,“函数function”和“对象object”之间还有这么一句话:对象是通过函数来创建的,而函数却又是一种对象. 这个函数是一种对象,上节中“Javascript之一切皆为对象1”也清楚的阐述 ...
- JavaScript系列----一切皆是对象
1.判断对象类型 1.1.typeof 运算符 首先要认识到,typepof是一个运算符,其运算需要一个参数,返回值是参数的类型. typeof使用方法 typeof parameter //使用方法 ...
- JavaScript进阶知识点——函数和对象详解
JavaScript进阶知识点--函数和对象详解 我们在上期内容中学习了JavaScript的基本知识点,今天让我们更加深入地了解JavaScript JavaScript函数 JavaScript函 ...
- JavaScript“并非”一切皆对象
上一篇:<函数声明和函数表达式--函数声明和函数表达式的异同> p{font-size:14px; } 写在前面 网上非常多都在说"JavaScript一切皆对象",那 ...
- javascript 核心语言笔记 6 - 对象
对象是 JavaScript 的基本数据类型.是一种复合值:将很多值聚合在一起.对象可以看做是无序集合,每个属性都是一个名/值对.这种基本数据结构还有很多叫法,比如「散列」(hash).「散列表」(h ...
- (转载)JavaScript中的原型和对象机制
(转载)http://www.cnblogs.com/FlyingCat/archive/2009/09/21/1570656.html 1 对象相关的一些语言特性 1.1 一切皆为对象JavaScr ...
- 03.JavaScript 面向对象精要--理解对象
JavaScript 面向对象精要--理解对象 尽管JavaScript里有大量内建引用类型,很可能你还是会频繁的创建自己的对象.JavaScript中的对象是动态的. 一.定义属性 当一个属性第1次 ...
- JavaScript中的原型和对象机制
1.对象相关的一些语言特性 JavaScript里所有的东西都是对象, 对象是属性的集合.要知道,函数也是对象, 能够作为变量的值. 返回值. 参数或者属性的值. 函数对象特殊的地方是能通过" ...
随机推荐
- linux shell重定向总结
command-line1 [-n] > file或文件操作符或设备 command-line1 [-n] >> file或文件操作符或设备 >suc.txt >err. ...
- Data对象
var myDate = new Date(); Date()返回当日的日期 例如今天是2016/8/19 getFullYear()返回当前日期的年 myDate.getFullYear() 201 ...
- [转]Android Studio 里搭建自动化测试框架Robotium
Android的自动化测试框架可选择的不多,后来选了Robotium(https://code.google.com/p/robotium/),它的语法及易用性挺像我们用在iOS里的KIF. 官方文档 ...
- 关于Android中res目录strings.xml文件中的转义字符之笔录
res目录strings.xml文件中的转义字符: ------------------> 代表着一个汉字的位置: ---- ...
- java学习-关于字符串String
有必要总结记录一下java的学习,否则,永远只是记忆碎片化和always google(费时) 刚好,小伙伴给了一份自己做的review,在学习的过程中,update一下自己的见解和学习内容: 关于S ...
- C# 5.0 异步编程
在C#5.0中,增加了一个强大的新功能--异步编程.( .NET FrameWork4.5 版本) 它以两个新型关键字出现: ·async ·await 1.Async方法有三种返回类型: asyn ...
- 太极旋转-JS实现
刚学了js的一些函数,所以做了一个太极的旋转.做完之后是上面这个样子的,是可以旋转的. 思路: 1.先做一个基准转盘,之后将元素都放在转盘上,跟随转盘动. 2.画两个半圆,主要属性是border-to ...
- 使用JavaScript获取日期加随机数生成单号
今天学习Javascript,得到一个自动生成单号的JavaScript,留下日后备用: function getNowFormatDate() { var day = new Date(); var ...
- Linux新手扫盲(转载)
一. Linux特点 1.免费/开源: 2.支持多线程/多用户: 3.安全性好: 4.对内存和文件管理优越. Linux最小只需4M ——> 嵌入式开发 二. 文件目录 Linux系统所有软硬件 ...
- CYQ.Data+EasyUI开发:几个相关的问题CheckBox、Tree、TreeGrid
前言: 话说到新的公司已经呆了三个星期了,从上班的第二天开始就一直在写项目文档和给开发人员培训,以至于我的QQ签名从"我不是来搞培训的“到最后直接换成”我是来搞培训的“. 虽然挂名开发经理, ...