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');
}

总之,要理解一切都是对象,要明确两个概念。第一,除了基本数据类型都是对象;第二,对象是属性的集合,属性包括基本值、对象和函数。

猜你喜欢

转载自www.cnblogs.com/ly2019/p/10963121.html