js面向对象的几种方式
JavaScript中对象的创建有以下几种方式:
(1)使用内置对象
(2)使用JSON符号
(3)自定义对象构造
一、使用内置对象
JavaScript可用的内置对象可分为两种:
1,JavaScript语言原生对象(语言级对象),如String、Object、Function等;
2,JavaScript运行期的宿主对象(环境宿主级对象),如window、document、body等。
我们所说的使用内置对象,是指通过JavaScript语言原生对象的构造方法,实例化出一个新的对象。如:
复制代码 代码如下:
var str = new String("实例初始化String");
var str1 = "直接赋值的String";
var func = new Function("x","alert(x)");//示例初始化func
var o = new Object();//示例初始化一个Object
二、使用JSON符号
(i)何谓JSON ?
JSON (JavaScript Object
Notation)即JavaScript对象命名,是一种轻量级的数据交换格式,易于阅读和编写,同时也易于及其解析和生成。它基于
《JavaScript Programming Language, Standard ECMA-262 3rd Edition -
December 1999》的一个子集。JSON是完全独立于语言的文本格式,因此成为数据交换的理想格式。
JSON作为
JavaScript的一个自己,同时ActionScript、C、C#、ColdFusion、E、Java、JavaScript、ML、
ObjectiveCAML、Perl、PHP、Python、Rebol、Ruby、Lua等一系列的语言都提供支持,使得JSON成为Ajax开发的
首选方案。
JSON有两种构建方式,一种是采用简单的“键/值对”的集合,在不同的语言中被理解为对象、记录、结构、字典、哈希表、有键列表,或者关联数组等,另一种采用有序的值列表,大部分语言把它理解为数组。
常用的创建方式是第一种,即采用“键/值对”集合的形式。在这种形式下,一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号),“
‘键/值' 对”之间使用“,”(逗号)分隔。
JSON具有以下特点:(1)简单格式化的数据交换;(2)易于人们的读写习惯;(3)易于机器的分析和运行。
在JavaScript中,JSON被理解为对象。通过字符串形式的JSON,数据可以很方便地解析成JavaScript独享,并进行数据的读取传递。通过JSON,在一定程度上客服了JavaScript对象无法作为参数系列化传递的问题。
1,简单的JSON
{name:"刘德华",age:"25",sex:"男"}
2,JSON值的类型
JSON的值可以是简单的数据类型,例如数字、浮点、字符等,也可以是数组及对象。例如以数组作为member键值的JSON:
{member:[{name:"刘德华"},{name:"郭富城"},{name:"张学友"},{name:"黎明"}]}
{
book:[{name:"三国演义"},{name:"西游记"},{name:"水浒传"},{name:"红楼梦"}],
author:[{name:"罗贯中"},{name:"吴承恩"},{name:"施耐安",{name:"曹雪芹"}}]
}
3,在JavaScript中使用JSON
JSON是JavaScript原生格式,这意味着在JavaScript中处理JSON数据不需要任何特殊的API或者工具包,JavaScript默认将JSON当做一个对象处理。
将对象传递给一个变量,例如:
复制代码 代码如下:
var somebooks = {
book:[{name:"三国演义"},{name:"西游记"},{name:"水浒传"},{name:"红楼梦"}],
author:[{name:"罗贯中"},{name:"吴承恩"},{name:"施耐安",{name:"曹雪芹"}}]
}
JSON的每个“键”相当于对象的属性,例如访问book中的第一个条目,在JavaScript中,就可以简单地使用“somebooks.book[0].name”来获取“三国演义”这个值。
我们不但可以将一个JSON字符串转化为对象,反过来将一个对象“编译”为一个JSON字符串,以方便JavaScript中的对象的传输。例如:
复制代码 代码如下:
var Animals = new Object();
Animals.name = "dog";
Animals.sex = "Male";
Animals.age = "2";
Animals对象无法被序列化传输,将Animals对象转化为JSON字符串,也就是“{name:"dog",sex:"Male",age:"2"}”。这样,把该JSON字符串作为HTTP请求的一个参数传递,从而达到序列化传输Animals对象的目的。
(ii)JSON通过字符串形式来表达JavaScript的对象。如:
复制代码 代码如下:
var myObject = {nickname:"my girlfried",name:"big
pig"};
JSON
实际上充当了一种在JavaScript对象和字符串之间实现相互转换的协议。由于JSON的“外表”可以看成但村的字符串,因此JSON在
JavaScript的对象传输方面可以起到一定的作用。例如把对象strObject转换成字符串后进行传输,在达到目的地后通过eval方法将其还原
成对象:
复制代码 代码如下:
function test (o)
{
alert (o.name)
}
var strObject = '{nickname:"my girlfriend",name:"big pig"}';
test (eval_r("(" + strObject + ")"));
三、自定义对象构造
创建高级对象构造有两种方式:使用“this”关键字构造、使用原型prototype构造。如:
复制代码 代码如下:
//使用this关键字定义构造的上下文属性
function Girl()
{
this.name = "big pig";
this.age = 20;
this.standing;
this.bust;
this.waist;
this.hip;
}
//使用prototype
function Girl(){}
Girl.prototype.name = "big pig";
Girl.prototype.age = 20;
Girl.prototype.standing;
Girl.prototype.bust;
Girl.prototype.waist;
Girl.prototype.hip;
alert(new Girl().name);
上例中的两种定义在本质上没有区别,都是定义“Girl”对象的属性信息。“this”与“prototype”的区别主要在于属性访问的顺序。如:
复制代码 代码如下:
function Test()
{
this.text = function()
{
alert("defined by this");
}
}
Test.prototype.test = function()
{
alert("defined by prototype");
}
var _o = new Test();
_o.test();//输出“defined by this”
当访问对象的属性或者方法是,将按照搜索原型链prototype
chain的规则进行。首先查找自身的静态属性、方法,继而查找构造上下文的可访问属性、方法,最后查找构造的原型链。
“this”
与“prototype”定义的另一个不同点是属性的占用空间不同。使用“this”关键字,示例初始化时为每个实例开辟构造方法所包含的所有属性、方法
所需的空间,而使用“prototype”定义,由于“prototype”实际上是指向父级的一种引用,仅仅是个数据的副本,因此在初始化及存储上都比
“this”节约资源。
javascript 中有哪些对象
描述 语言要素
启用并返回一个 Automation 对象的引用。 ActiveXObject 对象
提供对创建任何数据类型的数组的支持。 Array 对象
创建一个新的 Boolean 值。 Boolean 对象
提供日期和时间的基本存储和检索。 Date 对象
存储数据键、项对的对象。 Dictionary 对象
提供集合中的项的枚举。 Enumerator 对象
包含在运行 JScript 代码时发生的错误的有关信息。 Error 对象
提供对计算机文件系统的访问。 FileSystemObject 对象
创建一个新的函数。 Function 对象
是一个内部对象,目的是将全局方法集中在一个对象中。 Global 对象
一个内部对象,提供基本的数学函数和常数。 Math 对象
表示数值数据类型和提供数值常数的对象。 Number 对象
提供所有的 JScript 对象的公共功能。 Object 对象
存储有关正则表达式模式查找的信息。 RegExp 对象
包含一个正则表达式模式。 正则表达式对象提供对文本字符串的操作和格式处理,判定在字符串中是否存在某个子字符串及确定其位置。 String 对象
提供对 Visual Basic 安全数组的访问。 VBArray 对象
纯手打,希望能帮到你~~~~
javascript中的对象包括哪些
javascript中的对象包括自定义类,函数和一些原生对象。
在JavaScript中,通常可以使用构造函数来创建特定类型的对象。诸如Object和Array这样的原生构造函数,在运行时会自动出现在执行环境中。 此外,我们也可以创建自定义的构造函数。
举例如下:
function Person(name, age, job) {
this.name = name;
this.age = age;
this.job = job;
}
这里是用new来实例化一个person对象:
var person1 = new Person('Weiwei', 27, 'Student');
var person2 = new Person('Lily', 25, 'Doctor');
以这种方式调用构造函数实际上会经历以下4个步骤:
1、创建一个新对象(实例)
2、将构造函数的作用域赋给新对象(也就是重设了this的指向,this就指向了这个新对象)
3、执行构造函数中的代码(为这个新对象添加属性)
4、返回新对象
javascript有3种对象是什么对象
Js中的对象分为三类:
1,内置对象(静态对象)
2,本地对象(非静态对象)
3,宿主对象
首先来说宿主对象,宿主,顾名思义,就是js运行和存活的地方,它的生活环境:就是
DOM(文档对象模型)和BOM(浏览器对象模型).
其次说一下内置对象。首先问一个问题,大家有没有见过
var oMath = new Math();object is not a function
没见过对吧?那你有没有见过Array.push();呢?肯定也没见过,现在你很想试一试是怎么个情况,结果就是:undefined is not a function 。说到这大家应该都明白了,有一些对象,他们直接时候自己的属性和方法,比如Math.ceil();无需实例化,这就是内置对象。而必须实例化才能使用其方法和属性的就是本地对象。
常见的本地对象:Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、
URIError。
内置对象(只有两个):Math,Global(不常用,但是想想一下我,我们使用的类似于isNaN()、parseInt()和parseFloat()方法等都是它的方法。)那么留下一个思考题:json是什么呢?