如果我们希望某个对象创建后,自动有方法使用,可以在定义类的时候,直接指定成员函数
第一种方法: 动态的给某个对象指定函数
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);