当前位置: 首页 > 编程笔记 >

javascript面向对象特性代码实例

丁阳炎
2023-03-14
本文向大家介绍javascript面向对象特性代码实例,包括了javascript面向对象特性代码实例的使用技巧和注意事项,需要的朋友参考一下

一、基本的类的使用
方法一:

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简单实现面向对象编程继承实例代码,包括了Javascript简单实现面向对象编程继承实例代码的使用技巧和注意事项,需要的朋友参考一下 本文讲述了Javascript简单实现面向对象编程继承实例代码。分享给大家供大家参考,具体如下: 面向对象的语言必须具备四个基本特征: 1.封装能力(即允许将基本数据类型的变量或函数放到一个类里,形成类的成员或方法) 2.聚合能力(

  • 封装性 封装性就是隐藏实现细节,仅对外公开接口 类是数据与功能的封装,数据就是成员变量,功能就是方法 为什么要封装? 不封装的缺点:当一个类把自己的成员变量暴露给外部的时候,那么该类就失去对该成员变量的管理权,别人可以任意的修改你的成员变量 封装就是将数据隐藏起来,只能用此类的方法才可以读取或者设置数据,不可被外部任意修改是面向对象设计本质(将变化隔离)。这样降低了数据被误用的可能(提高安全性和灵

  • 本文向大家介绍浅谈Lua的面向对象特性,包括了浅谈Lua的面向对象特性的使用技巧和注意事项,需要的朋友参考一下  面向对象的特性     类: 类是可扩展的模板用来创建对象,提供状态的初始值(成员变量)和行为的实现。     对象: 它是类的实例并具有分配给自己独立的内存。     继承: 它是由变量和类的函数被其他类继承的概念。     封装: 它是将数据和函数相结合的一类内的方法。数据可以在类

  • 本文向大家介绍Java 面向对象编程三大特性?相关面试题,主要包含被问及Java 面向对象编程三大特性?时的应答技巧和注意事项,需要的朋友参考一下 (1)封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类就是对数据和数据操作的封装。可以说,封

  • 关于一个语言被称为面向对象所需的功能,在编程社区内并未达成一致意见。Rust 被很多不同的编程范式影响,包括面向对象编程;比如第十三章提到了来自函数式编程的特性。面向对象编程语言所共享的一些特性往往是对象、封装和继承。让我们看一下这每一个概念的含义以及 Rust 是否支持他们。In my view the Gang of Four is the best book ever written on

  • 本文向大家介绍javascript中的面向对象,包括了javascript中的面向对象的使用技巧和注意事项,需要的朋友参考一下 相信大家对javascript中的面向对象写法都不陌生,那还记得有几种创建对象的写法吗?相信大家除了自己常写的都有点模糊了,那接下来就由我来帮大家回忆回忆吧! 1. 构造函数模式 通过创建自定义的构造函数,来定义自定义对象类型的属性和方法。 2. 工厂模式 该模式抽象了创