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

(0)

相关推荐

  • Javascript基于对象三大特性(封装性、继承性、多态性)

    Javascript基于对象的三大特征和C++,Java面向对象的三大特征一样,都是封装(encapsulation).继承(inheritance )和多态(polymorphism ).只不过实现的方式不同,其基本概念是差不多的.其实除三大特征之外,还有一个常见的特征叫做抽象(abstract),这也就是我们在一些书上有时候会看到面向对象四大特征的原因了. 一.封装性     封装就是把抽象出来的数据和对数据的操作封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作(成员方法),

  • javascript 的面向对象特性参考

    javascript 的面向对象特性参考. 这是我学习javascript中面向对象特性的一点总结.希望对具有其他语言的面向对象设计经验的朋友理解javascript的OO有所帮助.我具有c++,java和python的面向对象设计的经验. 总的感受, javascript作为一种弱类型的动态语言,语法解决于java,但其面向对象的方式更和python相识. 1 面向对象的特性 类,成员变量,成员函数,类变量,类方法,继承,多态 1) 类 类的定义:function Circle(r) {   

  • Javascript 面向对象特性

    1. JavaScript中的类型 -------- 虽然JavaScript是一个基于对象的语言,但对象(Object)在JavaScript中不是第一型的.JS 是以函数(Function)为第一型的语言.这样说,不但是因为JS中的函数具有高级语言中的函 数的各种特性,而且也因为在JS中,Object也是由函数来实现的.--关于这一点,可以在 后文中"构造与析构"部分看到更进一步的说明. JS中是弱类型的,他的内置类型简单而且清晰: ------------------------

  • 利用javascript的面向对象的特性实现限制试用期

    下边是我自己写的一个类,类中有字段.方法 复制代码 代码如下: //构造函数 function Person(name,sex,age) { this.name = name; this.sex = sex; this.age = age; }; Person.prototype.getName = function () { return this.name; }; Person.prototype.getSex=function(){ return this.sex; }; Person.p

  • 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之前就是错的 方法二: 复制代码 代码如下: functio

  • javascript面向对象快速入门实例

    本文深入浅出的讲述了javascript面向对象快速入门实例.分享给大家供大家参考.具体如下: javascript面向对象入门案例: 复制代码 代码如下: <script language="javascript" type="text/javascript"> function Cat(){//js中对象的定义与函数一样,不同点在于怎么样调用. } var cat1 = new Cat();//创建类实例 //js中类属性可以动态添加,并不需要写在原

  • JavaScript 截取字符串代码实例

    这篇文章主要介绍了JavaScript 截取字符串代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 代码如下 <script> $(document).ready(function () { //下标从0开始 let str = '123456789'; //使用一个参数 console.log(str.slice(3)) //从第4个字符开始,截取到最后个字符;返回"456789" console.log(str.

  • javascript 面向对象的经典实例代码

    [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] JavaScript面向对象编程http://www.jb51.net/article/13661.htm

  • Javascript地址引用代码实例解析

    javascript地址引用 代码如下 var a = new Object(); a.price = 173; var b = a; b.price = 170; //b更改了属性值,a的属性值一起会被改变 alert(a.price); //输出170 var a =3 var b = a; b=4; alert(a); //输出170 可以看出object 是引用 学过c++的人知道 是地址 所以跟PHP不一样 PHP前面是要加&代表地址 ps补充下 复制对象 不修改原来对象属性的方法 v

  • javascript面向对象编程(一) 实例代码

    复制代码 代码如下: <script type="text/javascript"> var test = { numA: 10, objB: {}, arrC: [], init: function(){ alert(this.numA); }, sayHi: function(name){ alert("hello " + name); }, sayHelloWorld: function(){ this.sayHi("world"

  • javascript面向对象编程代码

    复制代码 代码如下: var orchard = function (){ //基类型构造函数代理 静态方法都在代理函数上 this.constructor && this.constructor.apply(this,arguments); }; orchard.extend = function() { var parentObj = this; var parameters = parentObj.parameters ? parentObj.parameters.concat(_.

  • JavaScript array常用方法代码实例详解

    1.map/reduce map() map()是array的一个方法 作用: 对array中每一个元素调用自定义函数 'use strict'; function pow(x){ return x*x; } var arr=[1,2,3,4,5] var newarray=arr.map(pow) map的回调函数有三个参数: callback(currentValue, index, array)通常只要第一个参数 PS: map()传入的参数是pow,即函数对象本身 通常map调用的自定义

  • Javascript简单实现面向对象编程继承实例代码

    本文讲述了Javascript简单实现面向对象编程继承实例代码.分享给大家供大家参考,具体如下: 面向对象的语言必须具备四个基本特征: 1.封装能力(即允许将基本数据类型的变量或函数放到一个类里,形成类的成员或方法) 2.聚合能力(即允许类里面再包含类,这样可以应付足够复杂的设计) 3.支持继承(父类可以派生出子类,子类拥有父母的属性或方法) 4.支持多态(允许同样的方法名,根据方法签名[即函数的参数]不同,有各自独立的处理方法) 这四个基本属性,javascript都可以支持,所以javasc

随机推荐