对象:
举个栗子:
<html>
<body>
<script>
//创建对象
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>
</html>
.代表函数引用
改 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 不可以有属性
不能写成 undefined.abc = 123;会报错。
//例:原始值不可能有属性和方法,但经过了包装类(加隐式)可以调用一些属性与方法
`var num = 4;` `num.len = 3;`
//系统隐式的加上 new Number(4).len = 3; 然后 delete
console.log(num.len);
//系统隐式的加上 new Number(4).len; 但是这个 new number 和上面的 new number
//不是同一个,所以返回 undefined
//而上面这些隐式的过程就是包装类
//例
var str = “abcd”;
str.length = 2;
//隐式的加上 new string(‘abcd’).length = 2; delete
console.log(str);
console.log(str.length);
//答案是 abcd,4