javascript之一切都是对象
在学习的过程中,我们常常能听到这样一句话:一切皆是对象。那么这句话该如何理解呢?
首先,我们要明确对象的概念。要明白除了基本数据类型都是对象。
typeof操作符是大家经常使用的,我们常用它来检测给定变量的数据类型。
1 var a;
2 console.log(typeof a); //undefined
3 console.log(typeof true); //boolean
4 console.log(typeof 'abc'); //string
5 console.log(typeof 12); //number
6 console.log(typeof null); //object,null被认为是一个空的对象引用
7
8 function fn (){
9 var a = 10;
10 }
11 console.log(typeof fn); //function
12 console.log(typeof [1, 'aaa', false]); //object
13 console.log(typeof {name: 'lisi',age: 18}); //object
js中分两种数据类型
基本数据类型:Null, Boolean, Number, String, Undefined, Symbol(ES6)
引用数据类型:Object (在js中,除了基本数据类型都是对象,函数是对象,正则表达式也是对象)
函数在js中是对象,不是一种数据类型。但是函数有一些特殊的属性,所以通过typeof来区分函数和其他对象是有必要的。
判断一个变量是不是对象很简单,基本数据类型的判断用typeof, 引用数据类型的判断用instanceof.
var b = 123;
if (typeof b == 'number') {
console.log("number类型");
}
var person = {
name: 'zhangsan',
age: 12
};
if(person instanceof Object){
console.log('Object类型的对象');
}
对象是属性的集合,属性可以包括基本值,对象或者函数。
1 //早期人们这样创建对象
2 var person = new Object();
3 person.name = 'lisi';
4 person.age = 12;
5 person.sayName = function (){
6 alert(this.name);
7 };
8 //现在常用字面量语法
9 var person = {
10 name: 'lisi',
11 age: 12,
12 sayName: function (){
13 alert(this.name);
14 }
15 };
在上例中,创建了一个名为person的对象,并为它添加了两个属性(name,age)和一个方法属性( sayName() )。由此可见,对象是属性的集合。
还有一个问题,既然函数是对象,那么函数该怎样添加属性呢?
//函数添加属性
function fn (){
var a = 10;
}
fn.a = '123';
fn.b = function (){
alert('bbb');
}
总之,要理解一切都是对象,要明确两个概念。第一,除了基本数据类型都是对象;第二,对象是属性的集合,属性包括基本值、对象和函数。
javascript之一切都是对象的更多相关文章
- 前端之JavaScript:JS之DOM对象三
js之DOM对象三 一.JS中for循环遍历测试 for循环遍历有两种 第一种:是有条件的那种,例如 for(var i = 0;i<ele.length;i++){} 第二种:for ...
- 深入理解javascript原型和闭包(1)——一切都是对象
“一切都是对象”这句话的重点在于如何去理解“对象”这个概念. ——当然,也不是所有的都是对象,值类型就不是对象. 首先咱们还是先看看javascript中一个常用的函数——typeof().typeo ...
- 深入理解javascript原型和闭包(1)---一切都是对象
深入理解javascript原型和闭包(1)---一切都是对象 type函数输出的类型,在此列出: function show (x){ console.log(typeof(x));//undefi ...
- 深入理解javascript原型和闭包(1)——一切都是对象 (转载)
深入理解javascript原型和闭包(1)——一切都是对象 http://www.cnblogs.com/wangfupeng1988/p/3977987.html “一切都是对象”这句话的重点在 ...
- JS对象 JavaScript 中的所有事物都是对象,如:字符串、数值、数组、函数等,每个对象带有属性和方法。
什么是对象 JavaScript 中的所有事物都是对象,如:字符串.数值.数组.函数等,每个对象带有属性和方法. 对象的属性:反映该对象某些特定的性质的,如:字符串的长度.图像的长宽等: 对象的方法: ...
- 程序猿都没对象,JS竟然有对象?
现在做项目基本是套用框架,不论是网上的前端还是后端框架,也会寻找一些封装好的插件拿来即用,但还是希望拿来时最好自己过后再回过头了解里面的原理,学习里面优秀的东西,不论代码封装性,还是小到命名. 好吧, ...
- javascript 核心语言笔记 6 - 对象
对象是 JavaScript 的基本数据类型.是一种复合值:将很多值聚合在一起.对象可以看做是无序集合,每个属性都是一个名/值对.这种基本数据结构还有很多叫法,比如「散列」(hash).「散列表」(h ...
- javascript之一切皆为对象3
在前面两个章节“Javascript之一切皆为对象1”和“Javascript之一切皆为对象2”中,曾提到: 1.“一切(引用类型)皆为对象” 2. “每个函数都有一个prototype” 3. “每 ...
- javascript之一切皆为对象2
其实呢,“函数function”和“对象object”之间还有这么一句话:对象是通过函数来创建的,而函数却又是一种对象. 这个函数是一种对象,上节中“Javascript之一切皆为对象1”也清楚的阐述 ...
随机推荐
- 详解Redis中两种持久化机制RDB和AOF
redis是一个内存数据库,数据保存在内存中,但是我们都知道内存的数据变化是很快的,也容易发生丢失.幸好Redis还为我们提供了持久化的机制,分别是RDB(Redis DataBase)和AOF(Ap ...
- Spring Cloud Gateway之全局过滤器在工作中的使用场景
一.使用注意事项 1.全局过滤器作用于所有的路由,不需要单独配置. 2.通过@Order来指定执行的顺序,数字越小,优先级越高. 二.默认全局拦截器的整体架构 三.实战场景,例如,校验token.记录 ...
- 解决nohup: 忽略输入并把输出追加到"nohup.out"或者nohup: 忽略输入重定向错误到标准输出端
nohup启动脚本的时候,没有指定输出路径,默认使用当前目录的nohup.out 例如下面这句就是默认使用nohup.out作为输出文件: nohup script.sh & 改成下面的,则/ ...
- Linux_磁盘管理理论概述
一.磁盘阵列 1.什么是磁盘阵列? 1️⃣:磁盘整列就是将多块独立的磁盘组合到一起,形成容量大的磁盘组. 2️⃣:将相同的数据存放到不多个的磁盘的不同位置 2.RAID0 1️⃣:RAID0是磁盘整列 ...
- 系统区域设置 本地语言的支持依赖于 /etc/locale.conf,/etc/locale.conf 包含不少于此相关的环境变量
https://linux.cn/lfs/LFS-BOOK-7.7-systemd/chapter07/locale.html 7.7. 系统区域设置 本地语言的支持依赖于 /etc/locale.c ...
- 061.Python前端Django组件用户认证组件
一 auth认证组件 在使用pymysql,数据库迁移的时候.,默认生成有十张表如下 查看author_user表结构 mysql> desc auth_user; +------------- ...
- docker命令补全
安装docker自带包: source /usr/share/bash-completion/completions/docker 缺少下面的包,TAB会报错 yum install -y bash- ...
- 如何查看自己的电脑 CPU 是否支持硬件虚拟化
引言 在你安装各种虚拟机之前,应该先测试一下自己的电脑 CPU 是否支持硬件虚拟化. 如果你的电脑比较老旧,可能不支持硬件虚拟化,那么将无法安装虚拟机软件. 如何查看自己 CPU 是否支持硬件虚拟化 ...
- s40 KVM虚拟化企业级实战
1-为何使用虚拟化 02-KVM虚拟化环境准备 yum install libvirt* virt-* qemu-kvm* -y [root@cs7-kvm ~]# systemctl start l ...
- Day30 BigInteger和BigDecimal
BigInteger与BigDecimal BigInteger类 Integer类作为int的包装类,能存储的最大整型值为2 31-1,Long类也是有限的, 最大为2 63-1.如果要表示再大的整 ...