Object对象的一些的隐藏函数介绍

object|对象|函数

属性:Object.constructor

该属性被定义在类的prototype中,当对象实例创建后通过__proto__链可被对象实例所调用,并指向当前类的构造函数。以此可判断某个对象直接所属的类是哪个(与instanceof不同,instanceof并不局限于对象直接所属的类,即使是父类也返回true)。

[示例]trace(Object.prototype.constructor == Object);  //输出 true
var a = new Object();
trace(a.constructor == Object);  //输出 true
var b = new Array();
trace(b.constructor == Array);  //输出 true
trace(b.constructor == Object);  //输出 false
trace(b instanceof Object);  //输出 true

代码拷贝框
trace(Object.prototype.constructor == Object); //输出 truevar a = new Object();trace(a.constructor == Object); //输出 truevar b = new Array();trace(b.constructor == Array); //输出 truetrace(b.constructor == Object); //输出 falsetrace(b instanceof Object); //输出 true
[Ctrl+A 全部选择 然后拷贝]


属性:Object.__constructor__

该属性功能和Object.constructor相似,区别在于它不是定义在类的prototype中的,而是当对象实例创建时附加到对象实例上的。同时,该属性也被super关键字作为父类构造函数使用时所隐含调用,用于指向父类的构造函数,即super(...)等价于this.__constructor__.call(this, ...)。

[示例]trace(Object.prototype.__constructor__ == Object);  //输出 false
var a = new Object();
trace(a.__constructor__ == Object);  //输出 true
var b = new Array();
trace(b.__constructor__ == Array);  //输出 true
trace(b.__constructor__ == Object);  //输出 false

代码拷贝框
trace(Object.prototype.__constructor__ == Object); //输出 falsevar a = new Object();trace(a.__constructor__ == Object); //输出 truevar b = new Array();trace(b.__constructor__ == Array); //输出 truetrace(b.__constructor__ == Object); //输出 false
[Ctrl+A 全部选择 然后拷贝]


方法:Object.isPrototypeOf(classFunc)

该方法用来判断当前对象是否在对象obj的__proto__链中。该方法可用来判断一个类是否另一个类的父类或子类。

[示例]trace(Object.prototype.isPrototypeOf(new Object()));  //输出 true
trace(Object.prototype.isPrototypeOf(new Array()));  //输出 true
trace(Array.prototype.isPrototypeOf(new Object()));  //输出 false
trace(Object.prototype.isPrototypeOf(Array.prototype));  //判断Object是否Array的父类,输出 true

代码拷贝框
trace(Object.prototype.isPrototypeOf(new Object())); //输出 truetrace(Object.prototype.isPrototypeOf(new Array())); //输出 truetrace(Array.prototype.isPrototypeOf(new Object())); //输出 falsetrace(Object.prototype.isPrototypeOf(Array.prototype)); //判断Object是否Array的父类,输出 true
[Ctrl+A 全部选择 然后拷贝]


方法:Object.isPropertyEnumerable(propName)

该方法用来判断名为propName的成员是否在当前对象中存在并且可被列举(使用for..in),换句话说也就是是否可见(使用ASSetPropFlags全局函数可设置对象属性是否可见)。

[示例]var a = {x:1, y:2};
ASSetPropFlags(a, ["y"], 1);  //设y为不可见
trace(a.y);  //仍可输出 2
for (var i in a) trace(i);  //仅输出 x
trace(a.isPropertyEnumerable("x"));  //输出 true
trace(a.isPropertyEnumerable("y"));  //输出 false

代码拷贝框
var a = {x:1, y:2};ASSetPropFlags(a, ["y"], 1); //设y为不可见trace(a.y); //仍可输出 2for (var i in a) trace(i); //仅输出 xtrace(a.isPropertyEnumerable("x")); //输出 truetrace(a.isPropertyEnumerable("y")); //输出 false
[Ctrl+A 全部选择 然后拷贝]


方法:Object.hasOwnProperty(propName)

该方法用来判断名为propName的成员是否是当前对象自己的成员,而非通过__proto__链从类的prototype中引用过来的。

[示例]function test () {}
test.prototype.x = 1;
var a = new test();
a.y = 2;
trace(a.x);  //输出 1
trace(a.hasOwnProperty("x"));  //输出 false
trace(a.y);  //输出 2
trace(a.hasOwnProperty("y"));  //输出 true

代码拷贝框
function test () {}test.prototype.x = 1;var a = new test();a.y = 2;trace(a.x); //输出 1trace(a.hasOwnProperty("x")); //输出 falsetrace(a.y); //输出 2trace(a.hasOwnProperty("y")); //输出 true
[Ctrl+A 全部选择 然后拷贝]


方法:Object.toString()

该方法可定义一个对象在转换成字符串类型时所产生的字符串结果,一般定义在类的prototype中。

[示例]

function point (x, y) {
  this.x = x;
  this.y = y;
}
point.prototype.toString = function () {
  return "[x:" + this.x + ", y:" + this.y + "]";
};
var pos = new point(10, 20);
trace("position is " + pos);  //输出 position is [x:10, y:20]

代码拷贝框
function point (x, y) { this.x = x; this.y = y;}point.prototype.toString = function () { return "[x:" + this.x + ", y:" + this.y + "]";};var pos = new point(10, 20);trace("position is " + pos); //输出 position is [x:10, y:20]
[Ctrl+A 全部选择 然后拷贝]

时间: 2024-10-07 10:34:51

Object对象的一些的隐藏函数介绍的相关文章

ES5的Object对象新增的3个API

ES5的Object对象新增API Object.create(proto[, propertiesObject]) 说明: 1. 简单来说,这个用于创建一个新对象: 2. 这个对象首先按引用继承了第一个参数的值, 3. 然后将第二个参数所描述的值添加进去(如果相同则覆盖) 第一个参数: 1. 第一个参数如果是个对象,那么这个对象的值改变时,新对象的同样属性的值也会随之改变: 2. 第一个参数可以是null,返回是Object 3. 可以是一个对象,返回还是Object 4. 也可以是数组(例如

详解Javascript中的Object对象_javascript技巧

Object是在javascript中一个被我们经常使用的类型,而且JS中的所有对象都是继承自Object对象的.虽说我们平时只是简单地使用了Object对象来存储数据,并没有使用到太多其他功能,但是Object对象其实包含了很多很有用的属性和方法,尤其是ES5增加的方法,因此,本文将从最基本的介绍开始,详细说明了Object的常用方法和应用. 基础介绍 创建对象 首先我们都知道,对象就是一组相似数据和功能的集合,我们就是用它来模拟我们现实世界中的对象的.那在Javascript中,创建对象的方

文件操作API函数介绍

在VC中,大多数情况对文件的操作都使用系统提供的 API 函数,但有的函数我们不是很熟 悉,以下提供一些文件操作API函数介绍: 一般文件操作 API CreateFile 打开文件 要对文件进行读写等操作,首先必须获得文件句柄,通过该函数可以获得文件句柄,该函 数是通向文件世界的大门. ReadFile 从文件中读取字节信息. 在打开文件获得了文件句柄之后,则可以通过该函数读取数据. WriteFile 向文件写入字节信息. 同样可以将文件句柄传给该函数,从而实现对文件数据的写入. Close

SQL Server 2008在对象资源管理器中隐藏系统对象

环境:SQLServer 2008 R2 问题:在对象资源管理器中隐藏系统对象 解决: 对象资 源管理器的"数据库"节点包含系统对象,如系统数据库.使用"工具"/"选项"页可以隐藏系统对象.某 些系统对象(如系统函数和系统数据类型)并不受此设置的影响. 在对象资源管理器中隐藏系统对象 1.在"工具"菜单上,单击"选项". 2.在"环境/常规"页上,选中"在对象资源管理器中 隐藏

PHP SPL标准库中的常用函数介绍

  这篇文章主要介绍了PHP SPL标准库中的常用函数介绍,本文着重讲解了spl_autoload_extensions().spl_autoload_register().spl_autoload()三个函数,需要的朋友可以参考下 PHP SPL标准库中提供了一些函数用来处理如自动加载.迭代器处理等. spl_autoload_extensions()添加spl_autoload()可加载的文件扩展名 spl_autoload_register()注册函数到SPL __autoload函数栈中

JavaScript创建一个object对象并操作对象属性的用法

 这篇文章主要介绍了JavaScript创建一个object对象并操作对象属性的用法,实例分析了javascript使用object类定义对象及属性的用法,需要的朋友可以参考下     本文实例讲述了JavaScript创建一个object对象并操作对象属性的用法.分享给大家供大家参考.具体分析如下: 下面的JS代码创建了一个myMovie对象,并给对象title和director属性赋值,通过Object定义对象,其属性可以不用定义,直接调用即可,非常简单. ? 1 2 3 4 5 6 <sc

java 某个类的几个对象,这些对象调用类中一个函数,是各自拥有自己的函数代码还是使用同一段代码?

问题描述 1.java 某个类的几个对象,这些对象调用类中一个函数(普通的函数),是各自拥有自己的函数代码还是使用同一段代码?2.java 继承中,子类从父类得到一些普通函数,这些函数的代码,是子类自己独自拥有一份还是和父类使用同一段函数代码.3.第一次发帖,积分什么的不会搞,貌似自己也没有积分,呵呵,大家包涵! 解决方案 引用1.java 某个类的几个对象,这些对象调用类中一个函数(普通的函数),是各自拥有自己的函数代码还是使用同一段代码?这几个对象调用的当然是同一段代码了.jvm中有一个ja

jquery中object对象循环遍历的方法_jquery

一个朋友问对象如何转为数组,当我问他为啥要转得时候,他告诉我,数组可以用js循环遍历,而对象则不可以.其实呢,对象同样可以循环遍历的啊.不用转换也可以循环!说明你对js或者jquery的某些操作不是很熟练!在这里我简单介绍一下! 案例 我们看如下对象: var data={ 张三:69, 李四:72, 王五:90, 二麻子:88, 前端博客:100, haorooms : 98, 王大壮:99 } 假如上面是后台返回的一个key,一个是value的对象(这种对象相信大家经常遇到吧!),现在要把这

PHP SPL标准库中的常用函数介绍_php技巧

PHP SPL标准库中提供了一些函数用来处理如自动加载.迭代器处理等. spl_autoload_extensions()添加spl_autoload()可加载的文件扩展名 spl_autoload_register()注册函数到SPL __autoload函数栈中. 复制代码 代码如下: /*test1.php*/ <?php class Test1 { }   /*test2.lib.php*/ <?php class Test2 { }   /*test.php*/ <?php /