对象构建方法
1.对象字面量/对象直面量
var obj = {};
2.构造函数
// 1.系统自带的构造函数Object()
var obj = new Object();
// 2.自定义(自定义构造函数名第一个字母建议大写)
function Car(color){
this.color = color;
this.name = "BMW";
this.height = "1000";
this.lenght = "5500";
this.health = 100;
this.run = function (){
this.health --;
}
//...
}
var car1 = new Car('red');
var car2 = new Car('green');
构造函数内部原理
// 当系统使用new关键字调用该函数时,系统会在函数前面隐式创建一个空对象,然后再函数末尾返回this;
function Car(color){
// var this = {}
this.color = color;
this.name = "BMW";
this.height = "1000";
this.lenght = "5500";
this.health = 100;
this.run = function (){
this.health --;
}
//...
// return this;
}
对象操作方法:增、删、改、查
包装类
为了便于操作“基本类型值”,JS 提供了 三个 特殊的引用类型:Boolean、Number、String。这些类型和其他引用类型相似,但同时 也具备 与各自基本类型相应的特殊行为。 实际上:每当读取一个基本类型值的时候, “后台就会创建一个 对应的基本包装类型的对象”,从能能够调用一些方法来操作这些数据。
引用类型和基本包装类型的主要区别就是对象的生存期;
自动创建的基本包装类型的对象,则只存在于一行代码的执行瞬间,然后立即被销毁;
这意味着我们不能在运行时为基本类型值添加属性和方法;
举例说明
var str = "abcd";
str.length = 2;
console.log(str);
误以为输出结果为ab,而实际输出结果为abcd;
var str = "abcd";
str.length = 2;
//实际执行为,new String("abcd"),
//然后new String("abcd").length = 2,然后delete销毁这个对象,与前面的对象无关,所以后面访问str时,还是abcd
console.log(str);