对js 面对对象编程的一些简单的理解
由简单开始深入:
最简单的 直接对象开始
1 var desen = { 2 age:24, 3 name:'xyf', 4 job:'fontEnd', 5 getName:function(){ 6 console.log(this.name); 7 }, 8 setName:function(name){ 9 this.name = name; 10 } 11 }
这是一个简单的对象实例。但是如果我要创建多个实例,将会非常麻烦。
改进写法:使用我们经常听到的构造函数模式。(构造函数的取名默认首位大写)
function Desen(age,name){ this.age = age; this.name = 'name'; this.getName=function(){ console.log(this.name); } this.setName=function(name){ this.name = name; } }
使用构造函数的好处有很多。一来可以方便的创建多个实例,二来可以清楚的知道他们的原型对象(实例拥有constructor
属性,指向他们的构造函数)
再进一步:如果我们有很多实例了,但是每个实例中有重复包含了setNameh 函数 非常浪费内存。这里就要引用到耳熟能详的原型概念了--Prototype.
继续修改之前的构造函数
function Desen(age,name){ this.age = age; this.name = 'name'; this.getName=function(){ console.log(this.name); } } Desen.prototype.setName = function(name){ this.name = name; }
这种写法,将之前每个实例都拥有的相同功能简化为一个。存于prototype对象中。至于为何(参考js原型链)。