第32讲 构造函数 成员函数详解
◆ 对——成员函数(方法)
比如:我们希望对象不但有属性,还希望他有行为,(行为在程序中要靠函数来体现)
① 添加speak函数,输出 我是一个好人
② 添加jisuan函数,可以计算1+…+1000的结果
③ 修改jisuan函数,该方法可以接收一个数n,计算1+…+n的结果
④ 添加add成员函数,可以计算两个数的和
function Person(name,age){
//这个就是使用传入的实际参数,去初始化属性
this.name=name;
this.age=age;
//输出自己的名字,这里this.show 就是一个公开的函数,函数名是show
this.show=function(){
document.write("名字+="+this.name);
}
//添加jisuan函数,可以计算从1+...+1000的结果
this.jisuan=function(n){
var res=0;
for(var i=1;i<=n;i++){
res+=i;
}
return res;
}
}
var p1=new Person("宋江",90);
p1.show();
var p2=new Person("林冲",12);
p2.show();
document.write("<br/>"+p1.jisuan(100));
▲给对象添加方法还有两种方式:
第一种:
function 类名(){
this.属性;
}
var 对象名=new 类名();
function 函数名(){
//执行
}
对象名.属性名=函数名;//这样就相当于把 函数赋给 对象名.属性名,此时这个属性名就表示一个函数。
对象名.属性名()
具体案例:
function Person(){
this.name="abc";
this.age=900;
}
function show1(){
window.alert("hello"+this.name);
}
var p1=new Person();
p1.abc=show1;
p1.abc();
第二种:
对象名.属性名=function(参数列表){
//代码
};
调用
对象名.属性名(实际参数);
具体案例
function Person(){
this.name="abc";
this.age=900;
}
var p1=new Person();
p1.abc=function show1(){
window.alert("hello"+this.name);
};
p1.abc();
第三种:
前面的几种方法有一个问题:那就是每个对象独占函数代码。这样如果对象过多,则会
影响效率,js设计者,给我们提供了另一个方法,原型法:这样多个对象可以共享函数代码:代码:
//希望所有的对象,共享某个函数
function Dog(){
}
//使用prototype去绑定一个函数给shout
//所有的类都会有prototype(原型)属性,prototype中所有绑定的方法,都是共享的
var dog1=new Dog();
//动态绑定一个函数给 shout属性
Dog.prototype.shout=function(){
window.alert('小狗');
}
dog1.shout();
var dog2=new Dog();
dog2.shout();//这里ok
对代码的原理说明:
→补讲=号的作用
① 当==的两边 都是字符串的时候,则比较内容 相等否
② 如==两边都是数字,则数的大小是否相等。
③ 如果==是对象,或者是 对象函数,则比较地址是否相等
转载于:https://blog.51cto.com/dwt1220/729838