JavaScript自定义对象的方式
来源:互联网 发布:jquery ajax json请求 编辑:程序博客网 时间:2024/05/22 02:15
在JavaScript中,对象是拥有属性和方法的数据。
自定义对象的方式:直接创建方式,对象初始化器方式,构造函数方式,原型模式,混合模式(原型+构造),动态方式,工厂方式
直接创建方式
<script type="text/javascript">var student=new Object();student.name="丹",student.age=21,student.sex="女",student.doHomework=function(){console.log("正在做作业");console.log(this.name+"正在做作业");}console.log(student.name);student.doHomework();</script>
对象初始化器方式
<script type="text/javascript">var student={name:"丹",age:21,sex:"女",doHomework:function(){console.log("正在做作业");console.log(this.name+"正在做作业");(this写在对象里边)}};console.log(student.name);student.doHomework();</script>
构造函数方式
1.<script type="text/javascript">functionStudent(){ this.name="丹", this.doHomework=function(){ console.log("正在做作业"); console.log(this.name+"正在做作业"); } } varstudent = new Student(); student.doHomework();</script>
2.<script type="text/javascript">function Student(){this.name="丹",this.doHomework=homework;}function homework(){console.log(this.name+"正在做作业");}var student = new Student(); student.doHomework();</script>
总结:
1、和上面两种方式对比,采用构造函数方式创建对象能够有效地节省代码
2、采用构造函数方式创建对象,this不能省略,这也是和普通函数的区别。
3、采用构造函数方式创建对象,第二种方式更可取,提高了代码的复用性。
prototype原型方法[ˈprəʊtətaɪp]
在声明一个新的函数以后,函数会有一个prototype的属性,通过该属性为对象添加属性和方法。(在JavaScript中,函数也是对象)
<script type="text/javascript">function Student(){}Student.prototype.name="丹丹";Student.prototype.age=22;Student.prototype.doHomeWork=function(){console.log(this.name+"正在做作业");};var student = new Student();student.doHomeWork();</script>
混合式(构造+原型)——最常用
构造函数定义对象属性,原型式定义对象方法
<script type="text/javascript">function Student(){this.name="丹丹";this.age=22;}Student.prototype.doHomeWork=function(){console.log(this.name+"正在做作业");};var student = new Student();student.doHomeWork();</script>
构造函数方式便于动态为属性赋值,但是这种方式将方法也定义在了构造方法体中,使得代码比较杂乱;而原型式不便于为属性动态赋值,但是这种方式定义的属性和方法实现了分离,所以取长补短——构造方法定义对象属性,原型方式定义对象方法。
工厂模式
function Student(name, age, job){ var o = new Object();o.name = name; o.age = age; o.sayName = function(){ alert(this.name); }return o;}var student = new Student("dan",22);
动态方式<script type="text/javascript">function Student(name, age){this.name = name; this.age = age; this.friends = ["嗯哼","哼嗯"];if(typeof this.sayName!="function"){ Student.prototype.sayName = function(){ alert(this.name); } }}var student = new Student("dan",22);student.sayName();</script>
0 0
- JavaScript自定义对象的方式
- 创建JavaScript自定义对象的方式
- 初识javascript自定义对象的七大方式
- javascript 自定义对象的几种方式和注意点
- javascript中的创建自定义对象的六种方式详解
- javascript中的创建自定义对象的六种方式详解
- javascript中的创建自定义对象的六种方式详解
- javaScript中自定义对象(类的定义方式)
- JavaScript创建自定义对象的三种方式
- javascript为对象添加自定义方法的几种方式
- javascript的自定义对象
- javascript的自定义对象
- javascript的自定义对象
- JavaScript的自定义对象
- 【JavaScript】(7)js中自定义对象的方式(模拟Java中面向对象建模)
- 自定义对象的监听方式
- javascript继承对象的方式
- javascript定义对象的方式
- vb.net 教程 3-3 窗体编程 输入对话框 1
- 对Linux系统休眠的理解
- 蓝桥杯 历届试题 蚂蚁感冒 解题报告
- Lab2
- 人脸识别(4)--Python3.6+dlib19.4识别实例
- JavaScript自定义对象的方式
- php生成随机验证码
- poj 2431(优先队列+贪心)
- 字符串函数之strlen() , strcpy() 的模拟实现
- Linux CentOS6系统安装最新版本Node.js环境及相关文件配置-实测
- MySQL5
- python去除文件中重复的行
- JAVA设计模式---单例模式
- 两个C函数的对比(软考笔记整理)