使用对象字面量的方式创建对象
var obj = { name: '刘德华', age: 18, sayHi: function () { console.log('hi'); } }; // 使用对象 console.log(obj.name); console.log(obj['age']); //注意,这里不能忘记掉引号。 obj.sayHi(); //属性采取的是属性名:属性值 //多组属性和方法中间采用的是逗号隔开 //方法后面跟的是函数。
使用 new Object创建对象
var object = new Object(); object.name = '刘德华'; object.age = 19; object.sex = '男'; object.sayHi = function(){ console.log('忘情水'); } //创建一个空对象,追加属性数据的方式。 对象名.属性名 = 值 //使用方式和上面都一样。 console.log(object.age);
自定义构造函数
上面两种方法,都只能一次创建一个对象,所以不太方便,如果我们需要一次创建多个对象的时候,就需要使用构造函数了。
// function 构造函数名(参数1....){ 构造函数名的首字母要大写 //this.属性名 = 属性值; //this.方法名 = function(){} // } // 调用构造函数 new 构造函数名()
示例:
function Star(name,age,sex){ this.name = name; this.age = age; this.sex = sex; this.sing = function(){ console.log('唱歌'); } } var ldh = new Star('张学友',22,'女'); //构造函数要通过new来调用 console.log(ldh.name); console.log(ldh.age); console.log(ldh.sex);
new 关键字执行的过程
- new 构造函数可以产生一个新的空对象
- this 就指向我们创建的这个空对象
- 执行构造函数里面的代码(完成赋值操作)
- 返回这个对象。
this的指向问题
一般情况this指向他的调用者。
- this在函数中的指的是 window 。因为window调用了这个函数。
- this在对象中的指向是当前这个对象。
- this在构造函数中的指向当前的这个调用者。