千家信息网

JavaScript中的Object到底是什么

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章将为大家详细讲解有关JavaScript中的Object到底是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。JavaScript的Obje
千家信息网最后更新 2025年02月01日JavaScript中的Object到底是什么

这篇文章将为大家详细讲解有关JavaScript中的Object到底是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

JavaScript的Object到底是什么?
刚开始我认为Object是js的所有对象的原型。
但是:alert(Object.constructor)显示function Function...
这说明Object的原型是Function?
但是问题又来了:
Function.prototype.read=function(){};//扩展Function的原型
for(var i in Object)alert(i)//显示read,这进一步证实了Object的原型是Function

Object.prototype.read=function(){};//扩展Object的原型
for(var i in Function)alert(i)//显示read,Function的原型是Object????
Object到底是什么?做为类的Object与Function是一回事?
这位朋友把Constructor、Prototype和Function搞混淆了,由于JavaScript是Object-based的语言(JavaScript does not contain proper classes)。说Object是所有对象的原形(prototype),其实是可以的,不过这里是指设计模式中的Prototype Pattern中的原形概念,而不是Object.prototype这个JavaScript的原形语言特性。

那么JavaScript中的Object到底是什么东东呢?Script56.chm(就是M$官方教程)上说:提供所有 JScript对象通用的功能。恩,明白吗?因该是明白了,但友好像还是不明白@_@。如果我们从数据结构上来说,一个object(Object的实例)就是一个无序的集合,类似C++中的map、C#中的hashtable、Java中的hashmap这样一个结构。并且包含了一个JavaScript语言系统赋予的原始值,什么意思呢?Object有个方法叫做valueOf,它的功能是返回指定对象的原始值。这个也是可以在Script56中查到的,并且还有一个表格列举了系统对象的valueOf返回结果。也就是说,Array、Boolean、Date、Function、Number等等对象,其实都是从Object来的,它们的祖先都是Object。它们表现不同的语言特性,比如Array有被自动管理的length属性,Boolean只有true或false取值,Date表示时间结构,Function可以被运行,都是它们的原始类型(valueOf)赋予它们的能力。Object实际只是一个概念,JavaScript这个语言基于对象,是说所有内建类型都被抽象出了一组公用的方法和属性(也可以叫行为和状态),我们就想像只拥有这些特性的一个东西就是Object。实际上Object在编程中没有太大用处,我们都是在使用Object的实例object,然后使用Object的集合特性(expando),扩充object成为我们希望的东西。对于Object.prototype,其实并不怎么能用到,因为每个确切的类型都有自己的prototype,我们添加原形方法大都针对确定的类型。

Object除了prototype外还有一个很重要的属性--constructor。这个东西就是用来完成我前面说到的对object的扩充用的,它也是我们使用JavaScript模拟OOP的基础。由于JavaScript中所有东西都是Object,所以constructor也是,不过它的原始类型是Function(运行Object.constructor.valueOf()得到:function Function() { [native code] })。当然反过来并不是所有的JavaScript对象都有constructor属性,一些内建对象没有constructor的说。

对于Object和Function的关系,我认为这不是很好的检验代码: Function.prototype.read=function(){};//扩展Function的原型
for(var i in Object)alert(i)//显示read,这进一步证实了Object的原型是Function

Object.prototype.read=function(){};//扩展Object的原型
for(var i in Function)alert(i)//显示read,Function的原型是Object?
这四行代码用来解释JavaScript的prototype的原理和模拟OO编程的原形继承方式比较sexy! 可是它们并不能清晰的说明Object和Function的关系:( 反而会愚弄视听。

下面简述一下JavaScript中的各种对象类型:
Native Object: JavaScript语言提供的不依赖于执行宿主的对象,其中一些是内建对象,如:Global、Math;一些是在脚本运行环境中创建来使用的,如:Array、Boolean、Date、Function、Number、Object、RegExp、Error。
Build-in Object: JavaScript语言提供的不依赖于执行宿主的内建对象,如:Global、Math;内建对象都是Native Object。
Host Object:JavaScript语言提供的任何依赖于宿主环境的对象,所有非Native Object的对象都是宿主对象,如:IE中的window,WScript中的wscript实例,任何用户创建的类

关于JavaScript中的Object到底是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

对象 原型 语言 类型 原形 原始 东西 宿主 就是 属性 特性 实例 方法 结构 运行 代码 内容 功能 实际 文章 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 合肥工程管理软件开发公司哪家好 游戏软件开发要求 企业服务器系统是什么 计算机软件开发主要学什么 软件开发过程管理过程优化 软件开发2011年11号 管家婆怎么传数据库 云之信网络技术有限公司 网络安全宣传教案 安全狗服务器版安全不 浦东新区数据软件开发价钱 服务器驱动升级导致蓝屏 无影云电脑与云服务器的区别 身份验证服务器的作用 软件开发系统框架设计 网络安全审查坚持从产品 北邮考研网络安全好不好考 老挝软件开发工资 河石网络技术有限公司 上海工程技术大学数据库 奉贤区参考网络技术咨询口碑推荐 软件开发学go还是py 华为多个应用软件无法连接服务器 eosio数据库 网络安全目标包括哪些 温州趣店互联网科技有限公司 易语言自带的数据库是什么 应用商店主服务器连接异常怎么办 方舟服务器建筑物消失 泰州视觉测量系统软件开发
0