一、基本的类的使用
方法一:
复制代码 代码如下:
function sth(a) // 构造函数
{
this.a = a;
this.fun = output; // 成员函数
}
function output(a, b, c)
{
document.write(this.a);
}
//调用
var s = new sth(250);
s.fun(1, 2, 3);
ouput(1, 2, 3); //如果output在sth之前就是错的
方法二:
复制代码 代码如下:function sth(a)
{
this.a = a;
this.output = function()
{
document.write(this.a);
}
}
var s = new sth(2);
s.output(); // 输出2
二、继承
方法一:
复制代码 代码如下:function A(x)
{
this.x = x;
}
function B(x, y)
{
// 方法1
/*
this.construct = A;
this.construct(x);
delete this.construct;
*/
// 方法2
//A.call(this, x);
// 方法3
A.apply(this, new Array(x)); // 亦可A.apply(this, arguments), 不过arguments参数顺序一定要对
this.y = y;
this.print = function()
{
document.write("x = ", x,
", y = ", y);
}
}
var b = new B(1, 2);
b.print();
alert(B instanceof A); // 输出false
优点:可以实现多继承(多调用call就好)
缺点:
· 必须以构造函数方式使用
· 使用instanceof运算符运算此类继承结果为false
方法二:
复制代码 代码如下:function A()
{
}
A.prototype.x = 1;
function B()
{
}
B.prototype = new A(); // 不能带参数!
B.prototype.y = 2;
B.prototype.print = function()
{
document.write(this.x, ", ", this.y, "<br>");
}
var b = new B();
b.print();
document.write(b instanceof A); // 输出true
缺点:
· 不能实现多继承
· 构造函数不带参数
Tips
通常使用混合模式,两者一起用
复制代码 代码如下:
function A(x)
{
this.x = x;
}
A.prototype.printx = function() // 写到A类里面this.printx = function....也是可以的,下同
{
document.write(this.x, "<br>");
}
function B(x, y)
{
A.call(this, x);
this.y = y;
}
B.prototype = new A(); // 不能带参数!
B.prototype.printxy = function()
{
document.write(this.x, ", ", this.y, "<br>");
}
var b = new B(1, 2);
b.printx(); // 输出1
b.printxy(); // 输出1, 2
document.write(b instanceof A); // 输出true
三、类似静态成员函数的使用
复制代码 代码如下:function sth(a)
{
this.a = a;
}
sth.fun = function(s)
{
document.write(s.a);
}
var s = new sth(2);
sth.fun(s); // 输出2
四、对象的释放
复制代码 代码如下:var obj = new Object; // obj是引用
obj = null; // 取消引用,会自动进行垃圾回收;如果需要根本释放此对象,要将它的所有引用都赋值为null
五、函数对象
复制代码 代码如下:var v = new Function("arg1", "arg2", "document.write(arg1 + arg2);"); // 定义一个函数对象,参数分别是arg1,arg2
v(1, 2); // 将会输出3
六、回调函数
复制代码 代码如下:function callback(func, arg)
{
func(arg);
}
function fun(arg)
{
document.write(arg);
}
//callback(func, "sb"); // 这种做法不行
var func = new Function("arg", "fun(arg);");
// 当然也可以把func(arg)换成具体的执行代码,
// 但是函数代码庞大了就最好这样做了
callback(func, "sb");
七、函数的重载
复制代码 代码如下:function fun()
{
switch (arguments.length)
{
case 1:
document.write(arguments[0]);
break;
case 2:
document.write(arguments[0] + arguments[1]);
break;
default:
document.write("ERROR!");
break;
}
}
fun(1);
fun(1, 2);
八、利用函数闭包实现有“静态变量”的函数
复制代码 代码如下:function fun()
{
var v = 1;
function fun2()
{
++v;
document.write(v);
document.write("<br>");
return v;
}
return fun2;
}
var func = fun();
func(); // 输出2
func(); // 输出3
func(); // 输出4
javascript,面向对象
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]