面向过程是对元素添加函数方法。
而面向对象则是通过创造一个类,这个类具有一系列的属性,然后将需要定义的元素定义为这个类的一员。
构造函数是面向对象的代表;例如:
function Person(name,age){
this.name = name;
this.age = age
this.sayName = function(){
}
}
构建函数的第一个字母默认约定为大写,�别不是必须如此,只是为了区分其他函数;毕竟它也是函数的一种。
当需要调用时 使用如下代码 var person1 = new Person("lzz","17")
构建函数的另一个特性就是用new开头。
和工厂模式对比不同之处是
①并没有在函数内部通过显式来创建函数②将属性和方法直接赋给了this对象。③不需要return
构造函数有一个prototype(原型)属性。和元素的实力对应 可以通过下标访问;例如
person1.prototype.gender = "man";
(person1.instanceOf Person)判断person1是否是Person的实例
Person.prototype.isPropertyOf(person1)Person是否是person1的原型
实例Person下有属性prototype 指向Person.prototype 属性下有一个constructor(构造函数)即为Person本身. 一般而言无法直接查看prototype 但是Chrome Safari 以及Firefox支持一个属性 : person1.__proto__来查看自身原型 prototype
实例调用函数时,首先从自身实例中获取,如没有,则从person1.prototype中获取
再次从 所有对象的原型中获取 Object.prototype.sayName = function(){}
均可自行设置。
有一些方法用来判断一个函数式来自哪个部分的定义。
person1.hasOwnprototype("name") 判断是否是实例自身属性