1.现在要调用这个对象里的health属性,就可以通过 mrZhang.health 来调用
2.在外部直接给这个对象的属性赋值,mrZhang.health = 101
mrZhang.health ++ 这样也可以改变该对象的属性值
3.this.health --; 在这种情况下,this相当于第一人称
二.对象属性的增,删,改,查
1.属性的增加
mrZhang.wife = "xxx"; 添加的属性后面必须要给值
2.属性的查看
mrZhang.name
3.属性的修改
mrZhang.sex = "female";
4.属性的删除
delete mrZhang.sex 注意后面不要加分号
注意一点,对象的属性未经定义就调用,不会报错,只会显示undefined
对象的传参
changePrepareWife : function (someone) {
this.prepareWife = someone;
}
对象的创建方法
//1.var obj = {} plainObject 对象字面量/对象直接量
//2.构造函数
// 1.1.系统自带的构造函数 new Object() Array() number()
var obj = new Object();
var obj = {};
上面与下面的构造对象的是一样的
//构造函数的命名规则,大驼峰式命名规则(所有单词的首字母必须大写)
var obj = new Object(); //不是在创建对象的时候就必须往里面添加属性值,可以在后期往上加
obj.name = 'abc'; //这里单引号和双引号都可以,但是建议使用单引号,否则传到后端php时就需要转码
obj.sex = 'female';
function person() { //构造函数和申明函数一模一样
}
var person1 = new person(); //使用new 才能生成一个对象
例子:
function Person(color) {
// var this = { //有new 才能出现这一步
// name : ""
//}
this.name = "BMW";
this.height = "1400";
this.lang = "1000";
this.color = color;
//return this;
}
var person = new Person("red"); //通过参数
var person1 = new Person("green");
解释:Person 共同的一个方法,而person,与person1不断调用Person方法来修改自身的属性,最后他们两个的属性就会变的非常不一样,就会各形成一个独立的方法
构造函数内部原理:
有new才会出现下面的三步
1.通过隐式 var this = { } :
2.通过隐式的执行 this.xxx
3.隐式返回return this
解释:上图的例子中,使用了new 对象,所以虽然return 返回了123原始值,但是在js中会把这个原始值忽略掉,强制转换为对象
包装类:
原始值没有属性和方法的
属性和方法,是对象独有的
但是:数字,字符串,布尔值,他们有两种形式
例如: var num = 123
var num = new Number(123) 后面的这种就能够像对象一样操作了
字符串,布尔值类似都是一样
undefined 与 null 不能有属性与方法
那原始值既然没有属性和方法,为什么又能调用属性呢?
那是因为经过了一个叫做包装类的操作
例子:
var str = "abcd";
str.length = 2;
// 先 new String('abcd').length = 2; 再销毁delete
//new String('abcd').length
console.log(str.length); //打印出4
例子: