JavaScript 对象是拥有属性和方法的数据。就比如,这个汽车有名字,颜色,重量等特征,也有启动,刹车,停车等行为,我们把他的特征看作js对象的属性,他的行为看作对象的方法,也叫函数。
一、JS对象的创建方式
1、字面量方式
创建一个对象obj,包含name,age,sex等属性和一个函数sayHi()。
var obj = {
name: 'zs',
age: 18,
sex: true,
sayHi: function () {
console.log(this.name);
}
};
2、使用 new 关键字
var person = new Object();//创建对象
//创建属性并赋值
person.name = 'lisi';
person.age = 35;
person.job = 'actor';
//创建函数并赋值
person.sayHi = function(){
console.log('Hello,everyBody');
}
3、工厂方式
工厂就是一个函数,传入值让工厂自己创建。工厂里也是通过new对象来处理,最后返回对象。
//传入name,age,job,让工厂自己创建
function createPerson(name, age, job) {
//创建对象person
var person = new Object();
//给person 对象赋值属性
person.name = name;
person.age = age;
person.job = job;
//给对象创建行为
person.sayHi = function(){
console.log('Hello,everyBody');
}
//返回创建的对象
return person;
}
//调用工厂,获取对象实例
var p1 = createPerson('张三', 22, 'actor');
4、使用自定义构造函数
function Person(name,age,job){
this.name = name;
this.age = age;
this.job = job;
this.sayHi = function(){
console.log('Hello,everyBody');
}
}
var p1 = new Person('张三', 22, 'actor');
二、获取对象的某个属性
获取对象中的所有属性的值:
三、删除属性
四、This关键字
函数内部的this几个特点:
- 函数在定义的时候this是不确定的,只有在调用的时候才可以确定
- 一般函数直接执行,内部this指向全局window
- 函数作为一个对象的方法,被该对象所调用,那么this指向的是该对象
- 构造函数中的this其实是一个隐式对象,类似一个初始化的模型,所有方法和属性都挂载到了这个隐式对象身上,后续通过new关键字来调用,从而实现实例化