深入理解javaScript原型和闭包(1)--- 一切都是对象

来源:互联网 发布:建筑工程软件有哪些 编辑:程序博客网 时间:2024/05/18 12:02

“一切都是对象”这句话的重点在于如何去理解对象这个概念
——-当然,也不是一切都是对象,值类型就不是对象

首先我们先看一下javascript中一个常用的运算符—–typeof

typedef输出的几种类型标识,其中undefined、number、string、boolean属于值类型不是对象;剩下的几种情况—–函数(function() {})、数组([1,’a’,b:20])、对象({})、null、new Klass()(new出来的一切东西都是对象。他们是引用类型

判断一个变量是不是对象非常简单。值类型的判断用typeof,引用类型的判断用instanceof。

var fn = function() {};console.log(fn instanceof Object);//true

那么在javascript中的对象,到底该如何定义呢?
对象,若干属性的集合
javascript中的对象比较随意,数组是对象,对象还是对象。对象里一切都是属性。只有属性,没有方法。—–方法也是一种属性,因为他的属性表示为键值对的形式。

而且,javascript中的对象可以任意扩展属性,没有class的约束。

var obj = {    a : 10,    b : function(x) {        alert(this.a + x);    },    c : {        name : '王福鹏',        year : 1999    }};

以上代码中,obj是一个自定义的对象,其中a、b、c就是他的属性,而且在c的属性值还是一个对象,他又有name和year两个属性。
这种可能比较容易理解,那么函数和数组也可以这样定义属性吗?—–当然不行,但是他可以用另一种形式,总之函数/数组之流,只要是对象,他就是属性的结合。

var fn = function() {};fn.a = 10;fn.b= function() {    alert(123);}fn.c = {    name : "王福朋",    year : 1998};

上段代码中,函数就作为对象被赋值了a,b,c三个属性,很明显,这就是属性的集合嘛。
这个有用吗?
咱们可以看看jQuery源码!
在jquery中,“jquery”或者“$”,这个变量其实就是一个函数,不信可以用typeof验证一下:

console.log(typeof $);     //functionconsole.log($.trim(" ABC "));

验明正身!
其次要解释的就是本文的内容—–一切(引用类型)都是对象,对象是属性的集合最需要了解的就是对象的概念。

阅读全文
0 0
原创粉丝点击