Javascript类(对象)定义问题
来源:互联网 发布:石家庄淘宝详情图拍照 编辑:程序博客网 时间:2024/06/06 06:47
在面向对象编程中,类是对象的模板,定义了同一组对象(另一说法,又称“实例”)共有的属性和方法。Javascript语言不支持“类”,但是可以使用一些变通的方法来模拟出类。Javascript中定义类有三种方式,下面就简单说一下。
方式一: 构造函数法
这是Java语言学习中,教科书上必教的方法。如下面的一段代码:
function Student(stuNo, stuName){ this.stuNo = stuNo; this.stuName = stuName;}生成实例的时候,使用new关键字,如:var stu = new Student("stu00001", "小柿子"); 另外类的属性和方法还可以定义在构造函数的prototype对象之上,如下代码:
Student.prototype.study = function(){ console.log("I'm studying");}这种方式用到了this和prototype对象,不易阅读,编写也较复杂。
方式二:Object.create()法
为了方便生成对象,出现了Object.create()对象法。原理是根据“类”就是一种对象,而不是函数。如下面的一段代码:
var student = { stuNo: 'stu0001', stuName: '小柿子', study: function(){ console.log("I'm studying"); }};var stu = Object.create(student);console.log(stu.stuName);stu.study();这种方式是不是比较第一种方式,更加灵活了吧,而且阅读性也不错吧。这种方法虽然简单,但是不能实现私有属性和私有方法,实例直接也不能共享数据,对“类”的模拟不够全面。
方式三:极简主义法
这种方法,不用使用this和prototype对象,也不用使用Object.create()法来生成对象。下面直接看代码:
var student = { newInstance: function(){ var stu = { stuNo: 'stu0006', stuName: 'erbin', study: function(){ console.log("I'm studying"); } }; return stu; }}var stu = student.newInstance();stu.study();使用这种方式, 类的继承也比较简单了,如下:
var address = { newInstance: function(){ var addr = { getAddr: function(){console.log("山东省菏泽市")} }; return addr; };};var student = { newInstance: function(){ // 继承 var stu = address.newInstance(); stu.stuName = 'erbin'; stu.study = function(){ console.log("I'm studying"); }; return stu; }}var stu = student.newInstance();stu.getAddr(); //获取学生erbin的地址对于私有属性和方法,只用你不把属性和方法定义在stu对象上面,都是私有的。
大家看了这个是不是了解了呢。
阅读全文
1 0
- Javascript类(对象)定义问题
- JavaScript定义类和对象
- JavaScript定义类和对象
- JavaScript 定义类或对象
- javascript定义类或对象
- JavaScript 定义类或对象
- javaScript定义类或者对象
- JavaScript定义类或对象
- JavaScript面向对象编程(2)-- 类的定义
- JavaScript面向对象编程(2)-- 类的定义
- [转]JavaScript面向对象编程(2)-- 类的定义
- JavaScript面向对象编程(2)-- 类的定义
- JavaScript面向对象编程(2)-- 类的定义
- javaScript中自定义对象(类的定义方式)
- JavaScript中定义类或对象
- JavaScript中定义类或对象
- JavaScript如何定义类或对象
- ECMAScript(JavaScript) 定义类或对象
- 中国智慧生活博览会(CEE 2017)—数字世界亚洲博览会会刊(参展商名录)
- PHP与正则表达式 | 黄乔国PHP
- 多线程串口接收数据 | 全局变量的使用
- 九大排序算法的总结与C++实现
- CSS中的盒子相关属性,盒子到底有多大
- Javascript类(对象)定义问题
- 基于java的开源论坛jforum的安装及简介
- 欢迎使用CSDN-markdown编辑器
- 在Java中如何高效的判断数组中是否包含某个元素
- static----成员变量和静态变量的区别
- 无名管道
- Python之‘’控制流‘’
- RedHat6.5虚拟机架设Redis和Kafka伪集群
- 轻松学习之 Objective-C消息转发