前言:JavaScript中有一句经典的名句:《一切皆对象,理解了对象你就理解了javascript》,你真的理解了吗 ???
- 回归基础:
-
JavaScript创建一个对象的方式有:
-
// 1.字面量的方式 let obj = { name:'chw', age:16, coding:function(){} } //2.内置构造函数 let obj1 = new Object({}) //3.自定义的构造函数 function Factory(){ //var this = {} 隐式操作 this.name = 'chw' this.coding = function(){} // return this 隐式操作 } let obj3 = new Factory() -
javascript的数据类型可以分为:原始数据类型(存储简单的数据段),如:Number,String,Boolean,null,undefind,symbol,引用数据类型(多个值构成的对象,存放在内存中):Object(Array,RegExp,Date,Math);只有引用的数据类型才有属性和方法,原始的数据类型不能有属性和方法
2.结合以上的基础,我们回归我们经常操作的字符串属性和方法
let str = 'chw'
let str2 = str.substring(2) // 'w'
以上操作是不是不符合我们一开说的,str 是原始的数据类型,原始数据类型没有方法和属性,但是其实其中的原理是:字符串操作属性和方法的时候会进行短暂的包装类过程,即执行内部的构造函数进行操作,1.根据对应的数据类型进行构造操作:Nunber()、String()、Boolean(),2操作完成后立即销毁
let str2 = str.substring(2) // 'w' 执行如下:
1.创建一个string类型对象
2.在实例上调用指定的方法
3.销毁这个实例
let str = new String('chw')
let str2 = str.substring(2)
str = null
3.总结
//1.因为有了包装类的过程,原始的数据类型可以当成对象来使用(验证:一切皆对象)
//2.所以原始数据不能自定义属性和方法,
//3.但是可以操作系统内部自带的属性和方法