Javascript面向对象编程
博客专区 > 别寒 的博客 > 博客详情
Javascript面向对象编程
别寒 发表于4年前
Javascript面向对象编程
  • 发表于 4年前
  • 阅读 14
  • 收藏 0
  • 点赞 1
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

 

呃,这一节和之后的知识会比较麻烦和繁琐,但是呢,没关系啦。方法有很多,我们只要会一种就可以了。嘿嘿@__@

 

对象函数(方法)

 

给对象添加(指定)函数的方法:

1.

function User(name){

this.name=name;

// 打印名称

this.printfName=function(){

documnet.write(this.name);

}

// 计算

this.sum=function(){

var number=0;

for(var i=1;i<100;i++){

number+=i;

}

return number;

}

}

 

var user = new User(何洪波);

user.printfName();// 打印名称

documen.write(user.sum());// 计算

 

2. 原型法:可以共享函数代码

function User(){}

User.prototype.printf=function(){

alert(何洪波);

}

var user1 = new User();

User2.printf();

var user2 = new User();

user2.printf();

 

 

3.

function User(){

this.name=hehongbo;

this.age=21;

}

function show1(){

alert(this.name);

}

var u=new User();

u.printf=show1;

u.printf();

 

4.

function User(){

this.name=hehongbo;

this.age=21;

}

var u=new User();

v.printf = function show1(){

alert(this.name);

};

u.printf();

 

第一种、第三种、第四种有个问题:每个对象独占函数代码,这样如果对象很多,则会影响效率。所以推荐使用第一种方法和第二种方法

 

判断两个对象是否为同一个对象:

alert(user1.printf == user2.printf);

 

 

如何给类添加方法(如何给某类型的所有对象添加方法)

jsarray对象扩展一个findval)方法,当一个array对象调用该方法时,如果能找到val则返回其下标,否则返回-1.

 

代码:

var arr1 = new Array(3);

arr1[0] = geor;

arr1[1]= john;

arr1[2] = tho;

 

// 遍历数组

for(var i=0;i<arr1.length;i++){

document.write(arr1[i]);

}

// 使用array提供的方法,颠倒数据

arr1.reverse();

 

给所有array对象添加一个方法 find();

Array.prototype.find = function(var){

// 遍历数组 

for(var i=0;i<this.length;i++){

if(val == this[i]){

return i;

}

}

return -1;

}

 

document.writeln(arr1.find(john));// 调用find方法

 

 

成员函数的参数可以是多个

function 函数名(参数1...){

}

 

成员函数可以返回值,也可以没用,但是有的话,最多只能有一个

 

Js不支持函数的重载,在调用一个函数的时候,是根据函数名称来调用,如果有多个函数名相同,则会现在最后一个函数

 

 

是不是头都晕了?楼主也是啊.....  给对象添加函数的方式有很多种,但是我们不要管,只要一种就好了,强烈建议使用第一种啊第一种!!!

 

 


  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 28
博文 254
码字总数 130346
×
别寒
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: