js面向对象的成员函数

来源:互联网 发布:刺客信条mac版 编辑:程序博客网 时间:2024/05/29 15:43


如果我们希望某个对象创建后,自动有方法使用,可以在定义类的时候,直接指定成员函数

第一种方法: 动态的给某个对象指定函数  
function Person(name,age)

{ this.name=name;   

this.age=age; }   

 //第一种方法,动态添加  

function speak()

{ document.write("我是"+this.name);   }

 //创建一个对象实例  

 var p1=new Person("大黄",90);  

 p1.fun1=speak; //相当于动态的给p1对象分配一个fun1属性(函数);

你可以理解, fun1 是 speak函数别名     

window.alert(p1.fun1);  

p1.fun1();  

speak(); //window 
第一种方法还有一种体现形式
//创建一个对象实例

var p1=new Person("大黄",90);  

p1.fun1=function speak()

{ document.write("我是"+this.name); };

//相当于动态的给p1对象分配一个fun1属性(函数);


第二种方法: 让所有的Person对象实例都有某个成员函数
//给所有对象分配函数
   function Person(name,age)

  {  this.name=name;   

     this.age=age;    

     this.speak=function ()

  {document.write(this.name+"hello");     }  

  }   

 var p1=new Person("小孩",9);  

 p1.speak();  

 var p2=new Person("大明",30);  

 p2.speak();


☞ 关于给对象指定成员函数说明:
如果添加的内部函数,该函数也称为特权函数, 所谓特权指的是可以访问对象的私有属性. 
如果添加的是外部函数(给某个对象指定的函数),则这样指定函数,只能访问对象的公开属性,不能访问私有属性. 
function Person(name,age,salary)

{ this.name=name;//公开  

 this.age=age;//公开  

 var salary=salary;//私有     }  

 var p1=new Person("宋江",34,1000);

function showInfo()

{   document.write(this.name+this.age+salary);//这里salary是私有  }  

p1.showInfo=showInfo;  

p1.showInfo();

一个类中可以有公开的函数

this.属性=funciton (){};



一个类中也可以有私有的函数
代码:
function Person()

{  this.name="abc";   

   var salary=900;   

   this.fun1=function ()

   { //代码  

     sayHello();  }   

     this.fun2=function()

    {  sayHello(); }   

     this.fun3=function()

    {     sayHello();    }   

    function sayHello()

    {   document.write("hello,资源打开"+this.name+" "+salary);   }  

    }  

    var p1=new Person();  

    p1.fun2(); 

小结: 通过代码我们可以看出.私有函数可以被 该类的其它方法(公开)调用,

同时私有函数可以去访问 该对象的 公开或者私有的属性.
小结: 通过代码我们可以看出.私有函数可以被 该类的其它方法(公开)调用,同时私有函数可以去访问 该对象的 公开或者私有的属性.


第三种方式给所有的对象实例添加方法(原型法)[推荐..] 

function Dog()

{   /* this.shout=function ()

{    document.write("小狗汪汪叫");   }*/  }  

//原型法 

Dog.prototype.shout=function ()

{   document.write("小狗叫");  } 

var dog1=new Dog(); 

dog1.shout();
对我们原型法的一个实际运用: 

 /*
请思考给 js 的 Array 对象扩展一个find(val) 方法 ,当一个Array对象调用该方法的时候,

如果能找 到val则返回其下标,否则返回-1  

*/ 

Array.prototype.find=function(val)

{      //顺序查找   for(var i=0;i<this.length;i++)

{    if(val==this[i]){     flag=true;     return i;    }  

}    

 return -1;  }
var arr=[4,590,-1,890]; 

window.alert(arr.find(890));


自定类的工厂方法(了解即可)
当你编写 js 代码时,当你需要一个对象时,可以通过new Object 来创建一个对象,

然后再动态的给该对象添加属性和方法. 
//工厂法创建对象 

var obj=new Object();  

obj.name="大明";
obj.show=function (val)

{   window.alert("ok"+val);  } 
obj.show("hello");


Number类 
var i=90;
var res=i.add(78).add(90).add(900).add(9000) 
window.alert(res);


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 合肥房子卖了户口怎么办 吃了粽子胃难受怎么办 突然血压高怎么办需要吃药吗? 胃一阵阵疼然后拉肚子怎么办 橱子和墙壁不平怎么办 复印选项是英文不认识怎么办 防盗门锁与门框结合不好怎么办 仿瓷涂料墙壁脏了怎么办 油笔画到墙纸上怎么办 水笔画在墙纸上怎么办 屋里有股石灰味怎么办 厨房太阳对着晒怎么办 房子有太阳西斜怎么办 房子晒到太阳很热怎么办 房子被太阳热了怎么办 房间西晒窗帘不遮光怎么办 新建房屋一面墙体有裂缝怎么办 卫生间地砖缝隙出现渗水怎么办 西户窗户太晒怎么办 西晒的墙面很烫怎么办 儿童房颜色太粉了怎么办? 小孩在家里偷钱怎么办 脾气不好的猫该怎么办 二年孩子偷钱怎么办 孩子偷钱2000报警怎么办? 我儿子十岁老是偷钱怎么办 13孩子偷同学钱怎么办 孩子偷同学的钱怎么办 儿子十四岁了老偷钱怎么办 发现初中生的儿子偷钱怎么办 被亲戚怀疑儿子偷钱怎么办 房门选的太白了怎么办 大厅地砖颜色比墙砖浅怎么办 房屋外墙渗水物业不管怎么办 走丢了怎么办教学反思 托班教案迷路了怎么办 大班安全教案遇到小偷怎么办 小班孩子舞台表演找不到位置怎么办 懂你英语学完了怎么办 小班社会走丢了怎么办 帮小老鼠搬鸡蛋怎么办