javascript类的定义方法有哪些


本文摘自PHP中文网,作者青灯夜游,侵删。

方法有:1、构造函数法,语法“function Cat(){}var cat1=new Cat();}”;2、Object.create()法,语法“var Cat={};var cat1=Object.create(Cat);”。

本教程操作环境:windows7系统、javascript1.8.5版、Dell G3电脑。

在面向对象编程中,类(class)是对象(object)的模板,定义了同一组对象(又称"实例")共有的属性和方法。

Javascript语言不支持"类",但是可以用一些变通的方法,模拟出"类"。

一、构造函数法

这是经典方法,也是教科书必教的方法。它用构造函数模拟"类",在其内部用this关键字指代实例对象。

1

2

3

function Cat() {

  this.name = "大毛";

}

生成实例的时候,使用new关键字。

1

2

var cat1 = new Cat();

alert(cat1.name); // 大毛

类的属性和方法,还可以定义在构造函数的prototype对象之上。

1

2

3

Cat.prototype.makeSound = function(){

  alert("喵喵喵");

}

关于这种方法的详细介绍,请看我写的系列文章《Javascript 面向对象编程》,这里就不多说了。它的主要缺点是,比较复杂,用到了this和prototype,编写和阅读都很费力。

二、Object.create()法

为了解决"构造函数法"的缺点,更方便地生成对象,Javascript的国际标准ECMAScript第五版(目前通行的是第三版),提出了一个新的方法Object.create()。

用这个方法,"类"就是一个对象,不是函数。

1

2

3

4

var Cat = {

  name: "大毛",

  makeSound: function(){ alert("喵喵喵"); }

};

然后,直接用Object.create()生成实例,不需要用到new。

1

2

3

var cat1 = Object.create(Cat);

alert(cat1.name); // 大毛

cat1.makeSound(); // 喵喵喵

目前,各大浏览器的最新版本(包括IE9)都部署了这个方法。如果遇到老式浏览器,可以用下面的代码自行部署。

1

2

3

4

5

6

7

if (!Object.create) {

  Object.create = function (o) {

     function F() {}

    F.prototype = o;

    return new F();

  };

}

这种方法比"构造函数法"简单,但是不能实现私有属性和私有方法,实例对象之间也不能共享数据,对"类"的模拟不够全面。

【推荐学习:javascript高级教程

以上就是javascript类的定义方法有哪些的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

javascript变量有几种类型

聊聊javascript中实现抽离公共函数的方法

javascript怎么定义类数组对象

javascript怎么修改css

javascript怎么判断变量是否相等

javascript库是什么东西

javascript字符串方法有哪些?

用h5的webgl如何在同一个界面做出json和echarts图表

javascript放在什么标签内

浏览器缓存策略的详细介绍(图文)

更多相关阅读请进入《javascript》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...