我们一直在用对象 可是你真的理解对象吗,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;
方法同理
概念理解了,其实代码就容易理解了。
现在说说一切皆可看作对象是怎么来的,我说说我自己的理解
数据类型分为两种 基本数据类型和引用类型
基本数据分为string,number,boolean,null,undefined
基本类型(基本数值、基本数据类型)是指非 对象 并且无方法的数据
一个一个说
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里面其他一切的都可以看作是对象 记住是看作 !!!
更多专业前端知识,请上 【猿2048】www.mk2048.com