javascript定义对象写法(个人整理)
javascript定义对象的几种简单方法
1.构造函数方式,全部属性及对象的方法都放在构造方法里面定义
优点:动态的传递参数
缺点:每创建一个对象就会创建相同的方法函数对象,占用大量内存
function User1(name, password) { this.name = name; this.password = password; this.login = function(name,password){ if(this.name == name && this.password == password) { return true; }else { return false; } };}2.原型方式,将对象属性及方法定义都写在对象的prototype里面
优点:每次创建对象时都是使用相同prototype中的方法,不会占用重复的内存
缺点:无法动态传递构造参数
function User2() { }User2.prototype.name = "prototype name";User2.prototype.password = "prototype password";User2.prototype.login = function(name,password){ if(this.name == name && this.password == password) { return true; } else { return false; }};原型方式的另一种写法:格式:var 对象名 = {}; 对象名.prototype.变量1=变量1的值; 对象名.prototype.变量2=变量2的值; ……; 对象名.prototype.函数1= function() { 函数体 }; 对象名.prototype.函数2= function() { 函数体 }; ……;说明:(1) 初始对象体内可以不定义任何东西;(2) 在要定义的变量前加“对象名.prototype.”的格式;(3) 对象的内容与值以等号分隔,成对出现;(4) 包含的变量或者函数之间以分号分隔,也可以省去分号。(5) 函数需要写在function(){}的大括号之内。例子:var data = {}; data.prototype. name ="Vicky”; data.prototype. age =20; data.prototype. eat = function() { alert(‘I wanna eat meat’); }; data.prototype. sleep= function() { alert(‘I wanna sleep’); };3.构造及原型混合方式,将属性定义写在构造方式里面,方法写在prototype里面
优点:综合了construct及prototype方式的优点,可以动态传递构造参数,并且方法函数对象也只创建一个
缺点:函数写在对象外面,不太符合面向对象的思想
function User3(name,password) { this.name = name; this.password = password;}User3.prototype.login = function(name,password) { if(this.name == name && this.password == password) { return true; } else { return false; }};4.动态原型方式:加一个判断属性,来判断该对象是否已经被创建过,如果被创建过,则方法就不在构建
优点:将原型函数写在对象定义里面
缺点:不支持继承
function User4(name,password) { this.name = name; this.password = password; if(typeof User4.__initialized == "undefined") { User4.prototype.login = function(name,password){ if(this.name == name && this.password == password) { return true; } else { return false; } }; User4.__initialized = true; }}5、JSON方式/对象直接量
格式:
var 对象名 = {
变量1: 变量1的值,
变量1: 变量1的值,
……,
函数1: function() {
函数体
},
函数2: function() {
函数体
}//Note:最后的逗号要去除为了和IE兼容。
};
说明:
(1) 大括号内直接填写变量或者函数;
(2) 对象的内容与值以冒号分隔,成对出现;
(3) 包含的变量或者函数之间以逗号分隔;
(4) 函数需要写在function(){}的大括号之内。
例子:
var 对象名 = {
name: “Vicky”,
age: 26,
eat: function() {
alert(‘I wanna eat meat’);
},
sleep: function() {
alert(‘I wanna sleep’);
}
};
注释:类似的方式也叫做匿名类
匿名类举例:
{
index: '//',
reg: new RegExp('^//.*$'),
css: "comment"
}
上面的方式创建了类,只是没赋给一个变量而已。6、create方式
该方式利用了Prototype JavaScript组件库。
格式:
var 对象名 = Class.create();
Object.extend(对象名.prototype, {
变量1: 变量1的值,
变量1: 变量1的值,
……,
函数1: function() {
函数体
},
函数2: function() {
函数体
},
……
});
说明:
(1) 对象的创建使用了Prototype库中的Class.create()函数;
(2) 对象的内容使用Prototype库中的Object.extend()函数来扩展;
(3) 被扩展的对象在传入Object.extend函数时一定要带上prototype,
(4) 扩展内容被大括号包含,其内与JSON方式的定义格式完全相同。
例子:
var data = Class.create();
Object.extend(dta.prototype, {
name: "Vicky",
age: 20,
eat: function() {
alert(‘I wanna eat meat’);
},
sleep: function() {
alert(‘I wanna sleep’);
}
});其实,JS对象的定义还有其它的方式,你也可以用上面几种进行组合定义,这显出了JS作为动态语言的自由性。
JS对象的创建正规方法如下:
var d1 = new Data();
JS对象变量的引用方式有两种:
(1) 点号方式引用,如,data.name。
(2) 数组方式引用,如,data[‘name’]。
转载于:https://blog.51cto.com/lovephpor/525514
javascript定义对象写法(个人整理)相关推荐
- JavaScript创建对象–如何在JS中定义对象
Objects are the main unit of encapsulation in Object-Oriented Programming. In this article, I will d ...
- Javascript定义类或对象之动态原型法
在javascrip定义类和对象有很多种方法,但是,对于动态原型方法定义的方式,我还是很陌生的.今天看了js高级程序设计才发现,动态原型方法的基 本思想与混合的构造函数/原型方式相同,即在构造函数内定 ...
- JavaScript中定义对象的几种方式
JavaScript中没有类的概念,只有对象. 在JavaScript中定义对象可以采用以下5种方式(附加改进方式): 1.基于已有对象扩充其属性和方法 2.工厂方式 3.构造函数方式 4.原型(&q ...
- IE10及其以下版本不支持Javascript Map对象(“Map”未定义)
项目js代码中使用了Javascript Map对象,代码在Chrome浏览器中可以正常运行,但在IE10及其以下版本中报"Map"未定义错误. 在MSDN中找到了IE各个版本浏览 ...
- ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map
根据视频进行整理 [https://www.bilibili.com/video/BV1uK411H7on?p=1] 视频资源(百度网盘): 链接:[https://pan.baidu.com/s/1 ...
- javascript笔记:深入分析javascript里对象的创建(上)续篇
今天回来一看我的博客居然有这么多人推荐真是开心极了,看来大家对我的研究有了认可,写博客的动力越来越大了,而且我发现写javascript在博客园里比较受欢迎,写java的受众似乎少多了,可能博客园里j ...
- 【JS】javascript正则表达式的基本使用(JavaScript RegExp 对象)
javascript正则表达式的基本使用(JavaScript RegExp 对象) 1. 正则表达式是什么? 2. 基本使用语法 2.1 正则表达式思维导图 2.2 定义正则表达式 2.2.1 普通 ...
- JavaScript原型对象与原型链
JavaScript原型对象与原型链 在JavaScript实际项目中,对象是十分重要的一种类型 无论是作为数据表现的一种形式或配置成工厂模式制造实例等等,这些用途在实际项目开发中都使用得非常广泛 依 ...
- JavaScript Object对象
原文:JavaScript Object对象 Object对象 1. 介绍 Object对象,是所有JavaScript对象的超类(基类).Object.prototype(Obecjt的原型)定义了 ...
最新文章
- paper 68 :MATLAB中取整函数(fix, floor, ceil, round)的使用
- Spark学习之路 (十五)SparkCore的源码解读(一)启动脚本
- C#连接sqlserver windows 和 sqlserver 身份验证的两种连接字符串
- 4.5 人脸验证与二分类-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
- [CSS]CSS:类目之间的竖线问题
- 续流二极管原理及应用
- P3327 [SDOI2015]约数个数和 (mobius反演)
- String与StringBuffer、StringBuilder之间的转换
- BAT文件命名中含有英文括号运行出错
- CANOpen生命守护机制
- 【opencv 学习】【常用的图像卷积核】
- 欧洲语言学习统一标准C1C2音频,北京通州区有没有西班牙语培训班(为何选择西班牙语)...
- mysql存储过程迭代自己获取所有子孙
- git如何合并指定文件内容_Git合并指定文件到另一个分支
- mysql sqlserver 拷贝_SQLyog工具进行SQLSERVER表结构或数据拷贝到MySQL数据库
- SQL的主键和外键详解!
- html5红外遥控,自己写的单片机万能红外遥控解码
- 功率放大电路工作状态
- python智能决策系统_智能风控决策引擎系统可落地实现方案(三)模型引擎实现...
- (转)A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'
热门文章
- 阿里JAVA开发手册零度的思考理解(二)
- ORA-09817:Write to audit file failed
- IntelliJ IDEA导入多个eclipse项目到同一个workspace下
- 遍历替换字符串中特定字符
- 一天一点linux(9):ubuntu下如何搭建LAMP开发环境?
- 【Mybatis框架】输出映射-resultType与resultMap
- PHP5 mysqli 教程
- UTF-8 BOM(EF BB BF)
- 当PrintForm遇到RPC服务不可用的错误”
- Create C++ Windows Forms Application in Visual Studio 2017