js封装函数

function  Person() {
    this .name =  "jee" ;
    this .age = 25;
    this .getName =  function () {
       return  this .name;
    }
}
 
var  person =  new  Person();
alert(person.age);
alert(person.getName());
1楼的兄弟的例子不错 我想就他的例子稍微深入的讲下 改正一些小的缺陷
首先  
构造函数中这段代码
this .name =  "jee" ;
this .age = 25;
这样的话 稍显死板 因为每一个对象 new 出来 name 和 age 都是 “jee”  25
那么改进后代码
function  Person(name,age) {
    this .name = name;
    this .age = age;
    this .getName =  function () {
       return  this .name;
    }
}
 
var  p1 =  new  Person( "xiaoqiang" ,1);
alert(p1.age);  //1
alert(p1.name); //xiaoqiang
alert(p1.getName()); //xiaoqiang
 
var  p2 =  new  Person( "zhangsan" ,2);
alert(p2.age); //2
alert(p2.name); //zhangsan
alert(p2.getName()); //zhangsan
那么 接下来 再看 这个方法
this .getName =  function () {
       return  this .name;
    }
这样写是没问题的 但是 有一点缺陷 就是 每个对象都维护相同的方法实例 而其实它们可以共享此方法 而不必每个对象都生成此示例 
在java语言中 面向对象的思想中 有一条 “继承” 既然此方法对于每个对象来说是公用的 那么可以在它的父类中实现 在javascript中继承 
是基于原型对象的继承 在原型对象中实现此方法,那么每个对象调用此方法时 首先查看自己是否有此方法 如果有 调用自己的方法 如果没有 
去原型对象中查询 调用原型对象的方法 是不是和java中的继承差不多呢?呵呵 看下 改造后的代码
function  Person(name,age) {
    this .name = name;
    this .age = age;
}
Person.prototype.getName =  function (){
    return  this .name;
}
var  p1 =  new  Person( "xiaoqiang" ,1);
alert(p1.age);  //1
alert(p1.name); //xiaoqiang
alert(p1.getName()); //xiaoqiang
 
var  p2 =  new  Person( "zhangsan" ,2);
alert(p2.age); //2
alert(p2.name); //zhangsan
alert(p2.getName()); //zhangsan
 
另外 还有对象字面量的形式构造对象
var  p1 ={
            name: "zhangsan" ,
            age:1,
            getName: function (){
                return  this .name;
            }
          };
alert(p1.name); //zhangsan
alert(p1.age); //1
alert(p1.getName()); //zhangsan
 
在这里鉴于篇幅 就不多讲了
如果lz想详细了解面向对象的javascript编程 可以建议你看下这两本书:<<javascript 权威指南>>,<<javascript高级程序设计>>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值