var mrDeng ={
name:"laodeng",
age:40,
sex:"female",
health:100,
smoke:function(){
console.log('i am smoking, i am cool');
mrDeng.health--;
},
drink:function(){
console.log('i am drinking');
mrDeng.health++;
}
}
</script>
</body>
`.代表函数引用`
改 mrDeng.health 为 this.health,此处 this 指代的是自己,是第一人称,指的就是 mrDeng。因为 this 是在一个方法里面,所以指的这个方法。
`smoke : function (){`
`console.log(‘I am good’)`
`this.health --;`
`},`
* **属性的增、删、改、查**
例在上面的基础上 `mrDeng.wife = “xiaoliu”`,也可以在控制台操作。
`=` `“”`等号后面的引号里面需要有值才可以,删除必须借助 `delete mrDeng.sex`
* 对象的创建方法
(1) `var obj = {}` 对象字面量/对象直接量 `plainObject`
(2)构造函数
1)系统自带的构造函数 Object()
`new Object();` `Array();` `Number();` `Boolean();` `Date();`
系统自带的构造函数 Object()可以批量生成对象,每一个对象都一样,但是彼此相互独立。 在 Object()前面加个 new,变成 new Object()的执行,就会真正的返回一个对象,通过 return 返回,拿变量接收。比如:`var obj = new Object();`
`var obj = new Object();`和 `var obj = {};`这样写区别不大
例 `var obj = new Object();`
`obj.name = ‘abc’;`
`obj.sex = “male”;`
双引号和单引号都是表示的字符串,写双引号也可以写单引号,但是为了跟后端 php配合最好写单引号。如果要打印一个单个的引号,用正则表达式转义字符`\`
2)自定义
`Object.create`(原型)方法
例 `function Person(){}`
`Person` 是可以随便写的,也是构造函数
构造函数跟函数结构上没有任何区别
例 `var person1 = new person();`
必须用 new 这个操作符,才能构造出对象
构造函数必须要按照大驼峰式命名规则,但凡是构造函数就要大写,例如 TheFirNa
例 car1 和 car 是长得一样,但是是不同的两个 car。方法名和对象名尽量不一样
a 和 A 变量是两个变量,`var car = new Car` 里面 car 和 Car 是两个变量。
例 这里的 color 可以和上面的重复。通过参数,使函数发生变化,变成自定义。
**构造函数内部原理**
前提必须要加 new,以下三步都是隐式的:
1.在函数体最前面隐式的加上 `var this = {}` 空对象
2.执行 `this.xxx = xxx;`
3.隐式的返回 `return this`
### 包装类
* `new String();`
* `new Boolean();`
* `new Number();`
`var num =123;` → 原始值数字
只有原始值数字是原始值,原始值不能有属性和方法。属性和方法只有对象有,包括对象自己,数组,function
`var num = new number 123;` → 构造函数。是对象 123,不是原始值数字
字符串类型的对象:
`var num = new Nunber(123);` //数字类型对象
`var str = new String(‘abcd’);` //字符串类型对象
`var bol = new Boolean(‘true’);` //布尔类型对象
undefined 和 null 不可以有属性