`

4、引用类型(本地对象)

阅读更多

创建对象

象是由 new 运算符加上要实例化的对象的名字创建的:

var o = new Object();

 

如果没有参数,括号可以省略:

var o = new Object;

 

也可用下面方式创建一个对象 :

var o = {};  

由下面代码可知,上述创建出的都是objet对象:

var o1 = {}; var o2 = new Object(); alert (o.construct == o1.construct)//true

Object 对象

ECMAScript 中的所有对象都由这个对象继承而来,Object 对象中的所有属性和方法都会出现在其他对象中 。 Object 对象具有下列属性:

constructor  创建对象的函数的引用(方法指针) 。对于 Object 对象,该指针指向原始的 Object() 函数。
Prototype    对该对象的对象原型的引用。对于所有的对象,它默认返回 Object 对象的一个实例

Object 对象还具有几个方法:
hasOwnProperty(property) 判断某对象是否有某个特定的属性。必须用字符串指定该属性。例如,o.hasOwnProperty("name")
isPrototypeOf(object) 判断该对象是否为另一个对象的原型。
propertyIsEnumerable 判断给定的属性是否可以用 for...in 语句进行枚举。
toString() 返回对象的原始字符串表示。对于 Object 对象,ECMA-262 没有定义这个值,所以不同的 ECMAScript 实现具有不同的 值。
valueOf()  返回最适合
该对象的原始值。对于许多对象,该方法返回的值都与 toString() 的返回值相同。

注释:上面列出的每种属性和方法都可以被其他对象覆盖。

Boolean 对象

Boolean 对象是 Boolean 原始类型的引用类型。 要创建 Boolean 对象,只需要传递 Boolean 值作为参数:

var oBooleanObject = new Boolean(true); 

Boolean 对象将覆盖 Object 对象的 valueOf() 方法,返回原始值,即 true 和 false。toString() 方法也会被覆
盖,返回字符串 "true" 或 "false"。

Number 对象

Number 对象是 Number 原始类型的引用类型。要创建 Number 对象,采用下列代码:

var oNumberObject = new Number(68); 

 
所有特殊值都是 Number 对象的静态属性,包括以下五个静态属性:
MAX_VALUE              可表示的最大的数。
MIN_VALUE               可表示的最小的数。
NaN                          非数字值。
NEGATIVE_INFINITY  负无穷大,溢出时返回该值。
POSITIVE_INFINITY   正无穷大,溢出时返回该值。


要得到数字对象的 Number 原始值,只需要使用 valueOf() 方法:

var iNumber = oNumberObject.valueOf(); 

 

当然,Number 类也有 toString() 方法,在《JavaScript学习笔记(三) —— 类型转换 》小节中已经详细讨论过该方法。
除了从 Object 对象继承的标准方法外,Number 对象还有几个处理数值的专用方法。

toFixed()

toFixed() 方法返回的是具有指定位数小数的数字的字符串表示 。例如:

var oNumberObject = new Number(68); 
alert(oNumberObject.toFixed(2));  //输出 "68.00" 
oNumberObject = new Number(68.123); 
alert(oNumberObject.toFixed(2));  //输出 "68.12" 
oNumberObject = new Number(68.523); 
alert(oNumberObject.toFixed(0));  //输出 "69",截断是四舍五入 

 
注:toFixed() 方法能表示具有 0 到 20 位小数的数字 ,超过这个范围的值会引发错误:

alert(oNumberObject.toFixed(21));  //运行出错 

toExponential()

返回的是用科学计数法表示的数字的字符串形式 。toExponential() 方法也有一个参数,指定要输出的小数的位数。
例如:

var oNumberObject = new Number(68); 
alert(oNumberObject.toExponential(1));  //输出 "6.8e+1" 

toPrecision()

toPrecision() 方法根据最有意义的形式来返回数字的预定形式或指数形式 。它有一个参数,即用于表示数的数字总
数(不包括指数)
。例如:

var oNumberObject = new Number(68); 
alert(oNumberObject.toPrecision(1));  //输出 "7e+1"=70 

 
toPrecision() 方法会对数进行舍入 。不过,如果用 2 位数字表示 68:

var oNumberObject = new Number(68); 
alert(oNumberObject.toPrecision(2));  //输出 "68" 

 
如果指定的位数多于需要的位数:

var oNumberObject = new Number(68); 
alert(oNumberObject.toPrecision(3));  //输出 "68.0",补零 

 
toFixed()、toExponential() 和 toPrecision() 方法都会进行舍入操作 ,以便用正确的小数位数正确地表示一个数。
提示: 应该少用Boolean 、Number 对象,以避免潜在的问题。只要可能,都使用数字的原始表示法

String 对象

String 对象是 String 原始类型的对象表示法。除了constructor、prototype属性外,还有一个length属性,这
这主不多介绍了,下面主要介绍一下它的相关方法。

valueOf() 、toString()  

方法都会返回 String 类型的原始值

var oStringObject = new String("hello world"); 
alert(oStringObject.valueOf() == oStringObject.toString()); //输出 "true" 

charAt() 、charCodeAt()

charAt() 方法返回的是包含指定位置处的字符的字符串:

var oStringObject = new String("hello world"); 
alert(oStringObject.charAt(1)); //输出 "e" 

 

charCodeAt() 返回字符的unicode码:

oStringObject = new String("江"); 
alert(oStringObject.charCodeAt(0)); //输出 "27743" 

concat()

把一个或多个字符串连接到 String 对象的原始值上。该方法返回的是 String 原始值,保持原始的 String 对象不变
与用加号(+)连接字符串是一样的:

var oStringObject = new String("hello "); 
var sResult = oStringObject.concat("world"); 
alert(sResult); //输出 "hello world" 
alert(oStringObject); //输出 "hello " 

indexOf() 、lastIndexOf()

返回的都是指定的子串在另一个字符串中的位置,如果没有找不到子串,则返回 -1。
indexOf() 方法是从字符串的开头(位置 0)开始检索字符串,而 lastIndexOf() 方法则是从字符串的结尾开始检索子串。例如:

var oStringObject = new String("hello world!"); 
alert(oStringObject.indexOf("o")); //输出 "4" 
alert(oStringObject.lastIndexOf("o")); //输出 "7" 

localeCompare()

  该方法有一个参数 - 要进行比较的字符串,返回的是下列三个值之一:

• 如果 String 对象按照字母顺序排在参数中的字符串之前,返回负数。

• 如果 String 对象等于参数中的字符串,返回 0
• 如果 String 对象按照字母顺序排在参数中的字符串之后,返回正数。

var oStringObject = new String("yellow"); 
alert(oStringObject.localeCompare("brick"));        //输出 "1" 
alert(oStringObject.localeCompare("yellow"));      //输出 "0" 
alert(oStringObject.localeCompare("zoo"));        //输出 "-1" 
alert(oStringObject.localeCompare("yello"));      //输出 "1" 

 


注:localeCompare() 是区分大小写的,大写字母在字母顺序上排在小写字母之后

slice() 、substring()

这两个方法的功能都是取一个字符串的字串,且都带两个参考,第一个为起始位置,第二个为结束位置,但不包括结束 位置。这两个方法并不完全相同,不过只在参数为负数时,它们处理参数的方式才稍有不同

对于负数参数,slice() 方法会用字符串的长度加上参数,substring() 方法则将其作为 0 处理 (也就是说将忽略它)。
例如:

var oStringObject = new String("hello world"); 
alert(oStringObject.slice(-3));          //输出 "rld" 
alert(oStringObject.substring(-3));      //输出 "hello world" 
alert(oStringObject.slice(3, -4));      //输出 "lo w" 
alert(oStringObject.substring(3, -4));  //输出 "hel" 
alert(oStringObject.slice(3,-10));      //返回空字符串 

 

slice(-3) 将被转换成 slice(8),而 substring(-3) 将被转换成 substring(0)。 同样,使用参数 3 和 -4 时,差别也很明显。slice() 将被转换成 slice(3, 7),与前面的例子相同,返回 "lo w"。而 substring() 方法则将两个参数解释为 substring(3, 0),实际上即 substring(0, 3),因为 substring() 总把较小的数字作为起始位,较大的数字作为终止位(但slice方法却返回空字符串)。因此,substring("3, -4") 返回的是 "hel"。这里的最后一行代码用来说明如何使用这些方法。

toLowerCase() 、toLocaleLowerCase() 、toUpperCase() 、toLocaleUpperCase()

这四个方法进行大小写转换,toLowerCase()、toUpperCase() 与地区无关,而其它两种相关。一般来说,如果不知道在以哪种编码运行一种语言,则使用区域特定的方法比较安全,但如果用作在条件语句中比较是否等于某字符串时,要使 地区无关性方法安全。

instanceof 运算符

此方法与 Java 运算符 instanceof 相似,用于判断某对象实例属于是哪种对象 。此操作只能用于引用类型。

 

变量 oStringObject 是否为 String 对象的实例:

var oStringObject = new String("hello world"); 
alert(oStringObject instanceof String); //输出 "true" 
分享到:
评论

相关推荐

    javascript本地对象_内置对象和宿主对象

    内置对象(Built-in Objects)是ECMAScript实现提供的一些核心对象,它们既包括本地对象,也包括全局对象和`Math`对象。全局对象在JavaScript中是特殊的,因为它实际上并不作为一个独立的实体存在,而是通过其方法如...

    Android Java代码与JNI交互 引用类型转换(五)

    在Java中,引用类型主要包括对象引用(Object)、类引用(Class)、数组引用(Array)等。当我们需要在JNI中处理这些引用时,需要进行适当的转换。 1. 对象引用转换: 在Java层,我们可以创建一个对象实例,并将其...

    corba 基于对象字符串的对象引用获取示例程序

    一旦有了对象引用,你可以将其窄化为特定接口的类型,以便调用其方法。假设我们的接口名为`MyInterface`,并且已经导入了相应的IDL模块: ```python from MyInterface import MyInterface my_obj = my_interface._...

    JavaScript入门教程之引用类型_.docx

    JavaScript中的引用类型是一种重要的数据结构,它允许我们将数据和功能组合在一起,形成对象。虽然JavaScript被归类为面向对象的语言,但它并不支持传统的类和接口概念,而是通过引用类型来实现对象的创建和操作。 ...

    jvm如何判断对象己死详解

    Java 虚拟机(JVM)在进行垃圾回收(Garbage ...总之,JVM通过可达性分析算法和引用类型来判断对象是否可以被回收,确保有效地管理内存,防止内存泄漏。理解这些机制对于优化Java应用程序的性能和内存使用至关重要。

    jni对象获取,使用jni从c++里获取Java对象

    局部引用在本地方法执行完后自动释放,如果需要在本地方法外部持续引用Java对象,应使用`NewGlobalRef()`创建全局引用,并在不再需要时使用`DeleteGlobalRef()`释放。 6. **字段ID和方法ID** 要访问Java对象的字段...

    对象的类型:本地对象(1)

    这些对象构成了ECMAScript的核心,是其引用类型的基础。本地对象包括如Object、Function、String、Boolean和Number等基本类型,以及在后续章节中会详细讨论的其他对象。 重点讨论的两种本地对象是Array和Date。...

    JNI 参数传递 Android 自定义对象

    本篇文章将深入探讨JNI中参数传递的基本数据类型、自定义对象以及系统对象。 一、基本数据类型的参数传递 在JNI中,基本数据类型如int、float、char等的传递相对简单。Java中的基本类型在C/C++中都有对应的类型。...

    jni本地调用4

    总结起来,"JNI本地调用4"涉及到的核心知识点包括JNI的基本概念、方法注册、头文件生成、数据类型转换、异常处理、线程安全以及内存管理等,这些都是在Java程序中进行本地调用所必须掌握的技术。通过熟练运用这些...

    Java基础复习笔记02对象状态、引用种类、垃圾回收形式[借鉴].pdf

    - **强引用(Strong Reference)**:默认的引用类型,只要存在强引用,对象就不会被垃圾回收。 - **软引用(Soft Reference)**:在系统将要发生内存溢出之前,会清理软引用指向的对象。`SoftReference`常用于缓存...

    java内存对象分配过程研究

    这行代码仅仅声明了一个类型为`Color`的引用变量`colory`,但并未创建真正的对象,因此该引用暂时没有指向任何具体的对象实例。 ##### 3.2 构造对象 构造对象涉及两个关键步骤:内存分配和初始化。 1. **内存分配...

    jni java传递对象到C

    Java对象在本地代码中通常被表示为`jobject`指针,这是一个通用类型,可以指向任何Java对象,包括类实例、数组、接口实例等。但是,由于Java对象的内存管理是自动的,而C/C++中没有垃圾回收机制,所以在C代码中直接...

    NDK08_JNI访问数组、引用、异常、缓存

    获取到的对象是Java对象的本地引用,需要使用`env->NewGlobalRef`创建全局引用以防止Java对象被垃圾回收。同时,当不再需要该对象时,别忘了使用`env->DeleteGlobalRef`释放引用。 三、JNI引用 JNI提供了三种类型的...

    java对象创建与回收demo

    如果一个对象没有从根(如栈、静态字段、本地方法栈)到其他对象的引用链,那么它被认为是不可达的,可以被回收。 2. 垃圾收集器类型:Java提供了多种垃圾收集器,如Serial GC、Parallel GC、CMS(Concurrent Mark ...

    一个远程调用对象的例子(VB)

    4. **客户端调用**:在客户端,你可以使用`Activator.GetObject`方法获取对远程对象的引用,并像调用本地对象一样调用其成员。需要提供服务端的类型名和URL来定位对象。 例如,一个简单的VB.NET远程调用对象的例子...

    基于消息中心的对象总线

    RMI可以与对象总线结合,提供透明的远程调用能力,程序员可以像操作本地对象一样操作远程对象,简化了分布式系统的设计。 **跨平台**特性意味着基于消息中心的对象总线可以运行在不同的操作系统和硬件架构上。这...

    JNI处理hashmap,string等对象的操作

    由于HashMap是引用类型,所以不能直接在JNI中创建。你需要先在Java层创建HashMap,然后通过JNI的引用传递给本地代码。在本地代码中,你可以使用`GetObjectArrayElement`和`SetObjectArrayElement`来操作HashMap的...

    Java对象内存布局 - 小分析

    这部分按照对齐原则分配,可能包括各种基本类型和引用类型。 3. **填充数据(Padding)**:为了对齐,如果实例数据不足一个内存对齐单位,JVM会在对象尾部添加填充字节,确保对象大小为对齐单位的整数倍。 理解...

    解析Java的JNI编程中的对象引用与内存泄漏问题

    JNI提供三种类型的引用:局部引用、全局引用和弱全局引用。这些引用的生命周期和特性各不相同: 1. 局部引用:大多数JNI函数在操作Java对象时会创建局部引用。局部引用仅在其创建的本地方法的动态上下文中有效,且...

Global site tag (gtag.js) - Google Analytics