构造函数
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;