对象
注意事项:1.未经声明的变量直接使用会报错,但是未经声明的对象的属性只会返回undefined。比如说:mrDeng.abc 他的返回是一个undefined。
构造函数
- var obj = { } plainObject 对象字面量和对象直接量
- 构造函数 有两种,第一种是系统本身的构造函数 new Object(),第二种是自己的自定义函数。
var obj = new Object(); //第一种创建
obj.name = 'xiaozhao';
obj.age = 20;
console.log(obj);
function Car (a){
this.color = a;
this.name = 'BMW';
this.width = 1000;
this.age = 0;
this.health = 1000;
this.run = function(){
this.health--;
}
}
var car1 = new Car('red'); //自定义的方式创建
var car2 = new Car('green');
function Student(name,age,sex){
this.name = name;
this.age = age;
this.sex = sex;
this.grade = 2017;
}
var student = new Student('zhangsan',20,'male');
构造函数的内部原理
- 在函数体最前面隐式的加上this = {}
- 执行this.xxx = xXX;
- 隐式的返回this
一个冷门的知识点
function Student(name,age,sex){
this.name = name;
this.age = age;
this.sex = sex;
this.grade = 2017;
return {};
}
var student = new Student('zhangsan',20,'male');
注意:若在此时返回student,根据三段论,此时应该返回空对象。即调用student,显示应该是{}
区别:
function Student(name,age,sex){
this.name = name;
this.age = age;
this.sex = sex;
this.grade = 2017;
return 123;
}
var student = new Student('zhangsan',20,'male');
注意:此时的return的值是一个基本数据类型,不会生效,此时如果想要查看student的内容,仍然是一个对象,而不会变成一个123.