每日总结
1.JavaScript面向对象
2.七大数据类型类型
1.JavaScript面向对象的理解
JavaScript面向对象和其他基于类的面向对象语言相比他是基于原型的,面向对象其实就是一种接近人类思维的一种概念,举个例子,先有一个苹果(对象),我们知道这个苹果能吃,之后才知道所有苹果都能吃(类)。说起面向对象大家都会想到封装继承多态,这里我要强调的是他们的不同点,JavaScript是一门弱类型语言,在很多地方并不严谨但是自由度也更高,他的对象是可以在运行中被修改的。
var o = {a:1};
o.b = 2;
console.log(o.a + o.b);//输出为3
在一般基于类的编程语言中这种是不能理解的,但是回归本质来讲这种往往也是一种合理的面向对象方式。要知道所谓的对象:
1.是一个可以触摸或者可以看见的东西;
2.人的智力可以理解的东西;
3.可以知道思考或行动(进行想象或者施加动作)的东西;
这里再说一下数据的属性的四个特征
value:属性的值。
writable:决定属性能否被赋值。
enumerable:决定for in 能否枚举该属性。
configurable:决定该属性能否被删除或者改变特征值。
如果我们想要去改变属性的特征我们可以使用object.defineProperty:
var o = {a:1};
//使用defineProperty方式给对象添加属性
Object.defineProperty(o,'b',{value:2,writable:false,enumerable:false,configurable:true});
//查看属性
console.log(Object.getOwnPropertyDescriptors(o,'a'))
Object.getOwnPropertyDescriptors(o,'b');
o.b = 3;
console.log(o.b);//输出为2
每次访问属性都会执行getter和setter函数。
var obj = {get a(){return 1}}
console.log(obj.a)
2.JavaScript七大数据类型
2.1 Undefined;
表示未定义,在JavaScript当中属于一个变量而非关键字,为了避免被篡改建议用void 0 替代他。
2.2 Null;
代表已经声明了但是为空。
2.3 Boolean;
布尔类型,只有真(true)和假(false)两个值。
2.4 String;
字符串的最大长度为2^52-1,字符串一旦被构造出来就无法变更,所以字符串具有值类型的特征。
2.5 Number;
数字类型,其中包含单精度小数与双精度小数,比如0.1+0.2 != 0.3 这就涉及到精度问题,所以尽量避免使用小数判断防止出错,number也是有最大长度限制的,比如正无穷与负无穷。
2.6 Symbol;
ES6的新类型,之后再详细介绍
2.7 Object;
对象类型,刚刚讲过了对象定义了属性的集合,属于key-value结构