码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-12-19 23:11:41      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:

原文来自http://www.cnblogs.com/wangfupeng1988/p/3977987.html

这是我非常感兴趣的东西,原型和闭包,当我看到标题后,我就迫不及待的点开了。今天我自己学习一下,顺便借花献佛,不理解的也可以再看一看。

"一切都是对象"这句话的终点在于如何去理解"对象"这个概念。所谓Object,其实是所有对象的祖宗,这句话不难理解,而值的类型不是对象。

首先咱们还是看一看JavaScript中一个常用的函数 - typeof()。

typeof()是判断数据类型的函数,输出后返回数据类型名称。、

用typeof()函数输出以下几种类型:

function show(){

  console.log(typeof(x)); // undefined
  console.log(typeof(10)); // number
  console.log(typeof(‘abc‘)); // string
  console.log(typeof(true)); // boolean

  console.log(typeof(function () { })); //function

  console.log(typeof([1, ‘a‘, true])); //object
  console.log(typeof ({ a: 10, b: 20 })); //object
  console.log(typeof (null)); //object
  console.log(typeof (new Number(10))); //object

 }

show();

以上代码列出了typeof输出的几种类型标识,其中(undefined,number,string,boolean)四种属于值类型,不是对象。

剩下的几种包括:函数、数组、对象、null、new Number(10)都是对象。他们都是引用类型。

判断一个变量是不是对象非常简单,值类型可以用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);

    },

    name:"xxx",

    year:2015

  }

这个例子中,obj是一个自定义对象,其中a,b,c就是它的属性,而且在c的属性值也事一个对象,它有name和year两个属性。

上面是一个比较好理解的例子,那么函数和数组也可以这样定义属性吗?

答案是不可以,但是它可以用另一种形式来定义,总之函数/数组、只要是对象,它就是属性的集合。接下来,我们用函数来做一个例子、

例:

  var fn=function(){

    alert(100);

  };

  fn.a=10;

  fn.b=function(){

    alert(123);

  };

  fn.c={

    name:"xxx",

    year:2015

  };

 这段代码中,函数就作为对象被赋值a、b、c三个属性--,这就是属性的集合

 在jQuery源码中,"jQuery"或者"$",这个变量其实是一个函数,我们可以用typeof来验证。

console.log(typeof($));//function

console.log($.trim(" abc "));

这段代码的意思是在$或者jQuery函数上加了一个trim属性,属性值是函数,作用是截取前后空格。

JavaScript与java/c#相比,首先最需要解释的就是弱类型,应为弱类型是最基本的语法,而且最常用。其次要解释的就是文本的内容,一切(引用类型)都是对象,对象是属性的集合。最需要了解的就是对象的概念。

最后,在typeof的输出类型中,function和object都是对象,为何要输出两种答案?

因为:function是所有函数对象的祖宗,而object是所有对象的祖宗具体原因,明天跟着王福朋的课走!!!

 

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

标签:

原文地址:http://www.cnblogs.com/webljx/p/5059984.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!