构造函数

javascript对象创建方式

在JavaScript中,一切皆是对象,对象只是带有属性和方法的特殊数据类型。

  • 布尔型可以是一个对象。
  • 数字型可以是一个对象。
  • 字符串也可以是一个对象
  • 日期是一个对象
  • 数学和正则表达式也是对象
  • 数组是一个对象
    -甚至函数也可以是对象

创建对象的方式包括两种:对象字面量和使用new表达式。对象字面量是一种灵活方便的书写方式,例如:

创建对象字面量
var o1 = {
p:”I’m in Object literal”,
alertP:function(){
    alert(this.p);
}

该方式的确定是每次新建一个对象都要写出完整的定义语句,不便于创建大量相同类型的对象,不利于使用继承等高级特性。

为什么是构造函数?

因为通过构造函数创建的所有对象都可以共享相同的原型,这意味着同一个构造函数所创建的所有对象都继承一个相同的对象,因此它们都是同一个类的对象。构造函数有两种方式:

直接构造函数:

var Person = new Object();
person.name="kevin";
person.age=31;
alert(person.name);
alert(person["name"])

自定义的构造函数:

function Person(name,age){//----构造函数的首字母可以大写也可以小写
    this.name = name;
    this.age = age;
    this.sayName = function(){
        console.log(this.name)
        }
}
var a = new Person("zhangsan",12);
在使用new操作符的时候一共发生了四件事情:
var obj  ={};//创建一个空对象
obj.__proto__ = Person.prototype;//将新生成的对象的__prop__属性赋值为构造函数的prototype属性,使得通过构造函数创建的所有对象可以共享相同的原型
Person.call(obj);//将构造函数的作用域赋给新的对象,于是this就指向了新的对象
return obj;
posted @ 2016-02-17 20:37  一张二向箔  阅读(148)  评论(0编辑  收藏  举报