源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

javascript面向对象特性代码实例

  • 时间:2022-03-08 16:18 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:javascript面向对象特性代码实例
[b]一、基本的类的使用 [/b]方法一:
[u]复制代码[/u] 代码如下:
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之前就是错的
方法二:
[u]复制代码[/u] 代码如下:
function sth(a) {    this.a = a;  this.output = function()  {   document.write(this.a);  } } var s = new sth(2); s.output(); // 输出2
[b]二、继承 [/b]方法一:
[u]复制代码[/u] 代码如下:
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 方法二:
[u]复制代码[/u] 代码如下:
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
缺点: · 不能实现多继承 · 构造函数不带参数 [b]Tips[/b] 通常使用混合模式,两者一起用
[u]复制代码[/u] 代码如下:
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
[b]三、类似静态成员函数的使用 [/b]
[u]复制代码[/u] 代码如下:
function sth(a) {    this.a = a; } sth.fun = function(s) {  document.write(s.a); } var s = new sth(2); sth.fun(s); // 输出2
[b]四、对象的释放 [/b]
[u]复制代码[/u] 代码如下:
var obj = new Object; // obj是引用 obj = null; // 取消引用,会自动进行垃圾回收;如果需要根本释放此对象,要将它的所有引用都赋值为null
[b]五、函数对象 [/b]
[u]复制代码[/u] 代码如下:
var v = new Function("arg1", "arg2", "document.write(arg1 + arg2);"); // 定义一个函数对象,参数分别是arg1,arg2 v(1, 2); // 将会输出3
[b]六、回调函数 [/b]
[u]复制代码[/u] 代码如下:
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");
[b]七、函数的重载 [/b]
[u]复制代码[/u] 代码如下:
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);
[b]八、利用函数闭包实现有“静态变量”的函数 [/b]
[u]复制代码[/u] 代码如下:
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
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部