创建对象的两种方式

  • A+
所属分类:Web前端
摘要

上面两种方法,都只能一次创建一个对象,所以不太方便,如果我们需要一次创建多个对象的时候,就需要使用构造函数了。


使用对象字面量的方式创建对象

    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 关键字执行的过程

  1. new 构造函数可以产生一个新的空对象
  2. this 就指向我们创建的这个空对象
  3. 执行构造函数里面的代码(完成赋值操作)
  4. 返回这个对象。

this的指向问题

一般情况this指向他的调用者。

  1. this在函数中的指的是 window 。因为window调用了这个函数。
  2. this在对象中的指向是当前这个对象。
  3. this在构造函数中的指向当前的这个调用者。