“一切皆对象”

当然也不是所有的都是对象,值类型(undefined,number,string,boolean)就不是对象;而函数、对象、数组、null、new Number(10)都是对象,它们都是引用类型。而判断一个变量是不是对象,值类型就用typeof、引用类型就用instanceof。

对象--属性的集合

java中的对象是new一个class出来,而且里面有属性、方法、字段,规定非常严格。而JavaScript中数组是对象、函数是对象、对象还是对象。对象里面的一切都是属性,只有属性没有方法。那么方法怎么表示呢?是的方法也是一种属性,它的属性表示为键值对的形式。

而且JavaScript中的对象可以任意的扩展属性,不受class的约束。

var obj={

  a:10,

  b:function(x){

   alert(this.a+x) 

}

  c:{

  name:"小明",

  age:10

}

}

obj为一个自定义对象,a,b,c都是它的属性,而且c属性值是一个对象;对象可能比较好理解,那么函数和数组怎么定义呢?以函数为例

var fn=function(){

  alert(100);

}

fn.a=100;

fn.b=function(){

  alert(alert(1));

}

fn.c={

  name:"小明",

  age:10

}

在jQuery源码中,“jQuery”或者“$”,这个变量其实是一个函数,咱们常用的 $.trim() 也是个函数,很明显,这就是在$或者jQuery函数上加了一个trim属性,属性值是函数。

综合得出结论:一切(引用类型)都是对象,对象是属性的集合。

最后,有个疑问。在typeof的输出类型中,function和object都是对象,为何却要输出两种答案呢?都叫做object不行吗?——当然不行。

深入理解js——一切都是对象的更多相关文章

  1. 理解js的prototype原型对象

    我们创建的每一个函数都有一个prototype(原型)属性.这个属性是一个指针,指向一个对象,而这个对象的用途是包括能够由特定类型的全部实例共享的属性和方法.假设依照字面意思来理解,那么prototy ...

  2. 和我一起理解js中的事件对象

    我们知道在JS中常用的事件有: 页面事件:load: 焦点事件:focus,blur: 鼠标事件:click,mouseout,mouseover,mousemove等: 键盘事件:keydown,k ...

  3. 深入理解js——prototype原型

    之前(深入理解js--一切皆是对象)中说道,函数也是一种对象.它也是属性的集合,你也可以对函数进行自定义属性.而JavaScript默认的给了函数一个属性--prototype(原型).每个函数都有一 ...

  4. 【学习笔记】深入理解js原型和闭包(1)—— 一切都是对象

    “一切都是对象”这句话的重点在于如何去理解“对象”这个概念. ——当然,也不是所有的都是对象,值类型就不是对象. 首先咱们还是先看看javascript中一个常用的运算符——typeof.typeof ...

  5. 程序猿都没对象,JS竟然有对象?

    现在做项目基本是套用框架,不论是网上的前端还是后端框架,也会寻找一些封装好的插件拿来即用,但还是希望拿来时最好自己过后再回过头了解里面的原理,学习里面优秀的东西,不论代码封装性,还是小到命名. 好吧, ...

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

    “一切都是对象”这句话的重点在于如何去理解“对象”这个概念. ——当然,也不是所有的都是对象,值类型就不是对象. 首先咱们还是先看看javascript中一个常用的函数——typeof().typeo ...

  7. js对象详解(JavaScript对象深度剖析,深度理解js对象)

    js对象详解(JavaScript对象深度剖析,深度理解js对象) 这算是酝酿很久的一篇文章了. JavaScript作为一个基于对象(没有类的概念)的语言,从入门到精通到放弃一直会被对象这个问题围绕 ...

  8. 在JS中,一切东东其实都是对象

    对象是组成JavaScript的基本单元,在JS中,一切东东其实都是对象,而且功能非常强大,它不仅风格独特,功能也与众不同. 一.引用(reference) 引用的概念是JS的基础之一,它是指向对象实 ...

  9. 【学习笔记】六:面向对象的程序设计——理解JS中的对象属性、创建对象、JS中的继承

    ES中没有类的概念,这也使其对象和其他语言中的对象有所不同,ES中定义对象为:“无序属性的集合,其属性包含基本值.对象或者函数”.现在常用的创建单个对象的方法为对象字面量形式.在常见多个对象时,使用工 ...

随机推荐

  1. turn.js 图书翻页效果

    今天用turn.js 做图书的翻页效果遇到问题: 图片路径总是出错 调了一天,总算调出来了 我用的thinkphp,其他的不知道是不是一样 三 个地方要改动: 1.后台查出地址 注意的地方:1.地址要 ...

  2. PHP curl传 json字符串

    $ch = curl_init(); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_seto ...

  3. H20的题——[noip2003]银河英雄传(并查集)

    公元五八○一年,地球居民迁移至金牛座α第二行星,在那里发表银河联邦创立宣言,同年改元为宇宙历元年,并开始向银河系深处拓展. 宇宙历七九九年,银河系的两大军事集团在巴米利恩星域爆发战争.泰山压顶集团派宇 ...

  4. pull方法解析xml

    private void getData() {        new Thread() { public void run() {                try {              ...

  5. Python UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)

    #!/usr/bin/python# -*- coding: utf-8 -*- 解决方法: 可以看到我的版本是2.6的,所以打开/usr/lib64/python2.6/site.py 红框里本来是 ...

  6. jQuery:获取浏览器中的分辨率

    JQuery: <script type="text/javascript"> $(document).ready(function(){ alert($(window ...

  7. 在ios8中做的屏幕旋转功能

    http://www.cnblogs.com/smileEvday/archive/2013/04/24/Rotate2.html 思路出自这篇博主的文章. 直接上代码 -(void)willAnim ...

  8. [Linux] Linux下谁在消耗我们的cache

    一.缘由: 曾经看到MySQL服务器上Cache占用特别大,其实大家都知道这是合理的,这些都是可用内存: 那么问题来了,是谁在占用这些Cache呢?如果去掉不合理的Cache占用,系统内存会更充分的得 ...

  9. ant 自定义taskdef的工作目录

    上次同事在用ant执行多层目录的测试用例的时候遇到了一些问题,也就是自定义的taskdef的工作目录总是在开始执行ant的那个目录,而有一些地方用到了当前目录,因此很多测试用命的代码出现了“找不到自定 ...

  10. maven3 手动安装本地jar到仓库

    安装命令: mvn install:install-file -Dfile={Path/to/your/ojdbc.jar} -DgroupId=com.oracle -DartifactId=ojd ...