我们一直在用对象 可是你真的理解对象吗,js中有一个说法是一切皆对象,其实这里说的应该是

一切皆可看作对象

对象就是可以拥有属性和方法的一个集合 士兵就是一个对象,它拥有身高体重的属性,保家卫国,吃饭睡觉的动作方法

在座的各位都是对象,世界上的万物都可看作对象,所以说,编程世界多姿多彩

也可以理解为无序的键值对  var obj={width:100,height:200,say:function(){//code}};

就相当于 var obj={};

obj.width=100;   //width属性值200

obj.height=200;   //height属性值200

obj.say=function(){  //say方法

//code

}

并且对象的属性和方法可以改变

obj.width=200;

方法同理

概念理解了,其实代码就容易理解了。

现在说说一切皆可看作对象是怎么来的,我说说我自己的理解

数据类型分为两种 基本数据类型和引用类型

基本数据分为stringnumberbooleannullundefined

基本类型(基本数值、基本数据类型)是指非 对象 并且无方法的数据

一个一个说

var up="he is a super man";
  var output=up.charAt(5);
  console.log(output);//a
  /*为什么基本数据类型可以使用字符串方法呢
  因为包装对象:当执行 var output=up.charAt(5);这个步骤的时候
  后台会这样 var up=new String("he is a super man");找到对应的包装对象,包装成一个和up值相等的对象返    回
  var output=up.charAt(5);调用方法返回给output
  up=null; 然后销毁

同理,数字、布尔值在读取属性的时候也可以通过自己的构造函数来创建自己的一个临时对象,并像对象一样(就是一个对象)引用各自的属性,所以,字符串、数字、布尔值都可以看成是对象,注意,这里是看成对象,他们并不是真正的对象,也就是严格来说,它们并不是对象,因为对象是可变的,可以修改属性,而原始值是不可变的是不可修改的(看下面)

var b="abcdefg";
console.log(b.toUpperCase());
console.log(b);

它只是返回一个变成大写的副本没有改变原始的变量

而且不能在原始数据类型上添加属性和方法。

因为创建的只是一个临时对象,写的属性和方法只存在于临时对象上,引用完后随即销毁

ps:还没有访问就已经销毁了

*/

接着说说null  他是一个关键字,表示为“空" 并且 console.log(typeof null); //object

由此可见它是一个对象,但是它只是指向一个空对象的引用。

然后是undefined,undefined是另一个表示“空值”特殊值,它表示未定义,当我们对变量只声明没有初始化时(赋值),输出为undefined,当我们引用一个不存在的属性时,输出也为undefined,但是请注意它并不是一个关键字,它是一个变量,而且是一个全局变量,我们可以验证一下:

console.log( undefined in window);//true

而且console.log(typeof undefined);//undefined

这严格表明undefined是这个类型的唯一成员

除了undefined js里面其他一切的都可以看作是对象  记住是看作 !!!

最新文章

  1. VB.NET 创建文件以及文件的读写(创建随机数)
  2. 用 windows GDI 实现软光栅化渲染器--gdi3d(开源)
  3. poj 3264 Balanced Lineup (RMQ)
  4. linux 查看cpu 内存 硬盘 文件夹大小
  5. <input>标签
  6. mongodb3.2系统性学习——4、find()操作
  7. UICollectionView 简单的使用和注意事项
  8. 临时节点不能有child 子节点
  9. 初学者一些常用的SQL语句(一)
  10. 简述Spring事务有几种管理方法,写出一种配置方式
  11. 二.Nginx反向代理和静态资源服务配置
  12. JavaScript入门篇
  13. json 报错'xxx is not JSON serializable'的处理方法
  14. PyCharm2017破解步骤
  15. Quartz理解与实现
  16. Linux安装卸载jdk1.8
  17. .net MVC 下拉多级联动及编辑
  18. luoguP1080 国王游戏 (贪心+高精度)
  19. 由结构体成员地址计算结构体地址——list_entry()原理详解
  20. Tomcat启动报错:StandardServer.await: create[8005] java.net.BindException: Cannot assign requested address

热门文章

  1. cocos2d-x 日志...
  2. ActiveMQ之VirtualTopic是什么?
  3. 2015309南皓芯实验二 Java面向对象程序设计
  4. who am i ?
  5. oracle创建job和删除job
  6. 何时调用getView?——从源码的角度给出解答
  7. win7下docker环境搭建nginx+php-fpm+easyswoole开发环境
  8. poj1182 食物链(带权并查集)
  9. Python爬虫个人记录(三)爬取妹子图
  10. Windows Installer服务总是自动关闭导致无法安装在win10上安装英伟达显卡驱动的解决方案