`
yiminghe
  • 浏览: 1466524 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

内置对象原型的类型

阅读更多

一直以为 String.prototype 就是一个 object ,String 就是一个函数 ,只不过由系统实现,看了这个评论:


http://thinkweb2.com/projects/prototype/instanceof-considered-harmful-or-how-to-write-a-robust-isarray/#comment-52895


查了 ecmascript 262 spec 以及 ie6 ,firefox3.5 实验才发现实际和标准还是不完全一样的


利用 Object.prototype.toString.call 得到 [[class]]

 

IE6 6.0.2900.5512

 

Object.prototype.toString.call(String.prototype) : [object Object] 
Object.prototype.toString.call(Number.prototype) : [object Number] 
Object.prototype.toString.call(undefined) : [object Object] 
Object.prototype.toString.call(null) : [object Object] 
Object.prototype.toString.call(Boolean.prototype) : [object Boolean] 
Object.prototype.toString.call(Function.prototype) : [object Function] 
Object.prototype.toString.call(Array.prototype) : [object Array] 
Object.prototype.toString.call(Date.prototype) : [object Date] 
Object.prototype.toString.call(RegExp.prototype) : [object RegExp] 
Object.prototype.toString.call(Object.prototype) : [object Object] 
Object.prototype.toString.call(Error.prototype) : [object Object] 
Object.prototype.toString.call(EvalError.prototype) : [object Error] 
Object.prototype.toString.call(Error) : [object Function] 
Object.prototype.toString.call(EvalError) : [object Function] 
Object.prototype.toString.call(/t/) : [object RegExp] 

 

Firefox 3.5.2

 

Object.prototype.toString.call(String.prototype) : [object String]
Object.prototype.toString.call(Number.prototype) : [object Number]
Object.prototype.toString.call(undefined) : [object Window]
Object.prototype.toString.call(null) : [object Window]
Object.prototype.toString.call(Boolean.prototype) : [object Boolean]
Object.prototype.toString.call(Function.prototype) : [object Function]
Object.prototype.toString.call(Array.prototype) : [object Array]
Object.prototype.toString.call(Date.prototype) : [object Date]
Object.prototype.toString.call(RegExp.prototype) : [object RegExp]
Object.prototype.toString.call(Object.prototype) : [object Object]
Object.prototype.toString.call(Error.prototype) : [object Error]
Object.prototype.toString.call(EvalError.prototype) : [object Error]
Object.prototype.toString.call(Error) : [object Function]
Object.prototype.toString.call(EvalError) : [object Function]
Object.prototype.toString.call(/t/) : [object RegExp] 

 

ecma 262 spec

 

Object.prototype.toString.call(String.prototype) : [object String]
Object.prototype.toString.call(Number.prototype) : [object Number]
Object.prototype.toString.call(undefined) : global object implementation dependent
Object.prototype.toString.call(null) : global object implementation dependent
Object.prototype.toString.call(Boolean.prototype) : [object Boolean]
Object.prototype.toString.call(Function.prototype) : [object Function]
Object.prototype.toString.call(Array.prototype) : [object Array]
Object.prototype.toString.call(Date.prototype) : [object Date]
Object.prototype.toString.call(RegExp.prototype) : [object RegExp]
Object.prototype.toString.call(Object.prototype) : [object Object]
Object.prototype.toString.call(Error.prototype) : [object Error]
Object.prototype.toString.call(EvalError.prototype) : [object Error]
Object.prototype.toString.call(Error) : [object Function]
Object.prototype.toString.call(EvalError) : [object Function]
Object.prototype.toString.call(/t/) : [object Object] 
 

 

 


javascript 作为弱类型语言,知道这些况且还是原型又有什么用呢,我先思考下。.....

 

 

分享到:
评论

相关推荐

    JavaScript内置对象大全

    ### JavaScript内置对象大全:深入解析 #### 一、Date对象:日期与时间处理的核心 `Date`对象在JavaScript中用于处理日期和时间相关的操作。它提供了丰富的方法来获取和设置日期时间的不同部分。 1. **构造函数**...

    JavaScript内置对象属性及方法大全

    ### JavaScript内置对象属性及方法详解 #### 一、概述 在JavaScript编程语言中,内置对象是预先定义的对象,包括它们的属性和方法。这些对象能够帮助开发者高效地完成各种任务,尤其是在Web端开发中,它们提供了...

    javascript 内置对象大全(完整版)

    JavaScript内置对象大全是学习JavaScript编程不可或缺的部分,涵盖了语言的核心组件和功能。JavaScript是一种轻量级、解释型的编程语言,最初由Netscape公司开发,主要用于网页和浏览器交互,提供动态网页效果和用户...

    Javascript中prototype属性实现给内置对象添加新的方法

    通过使用原型,开发者可以为JavaScript内置对象添加新的方法,这样不仅能够扩展内置对象的功能,还可以保持代码的整洁和重用性。本文将详细阐述prototype属性的用法,以及如何使用它给内置对象添加新方法的技巧。 ...

    浅析JavaScript中的类型和对象

    这些类型是JavaScript内置的构造函数,可以用来创建相应类型的对象实例。 举例来说,Array类型有一个原型方法.push(),可以用来向数组添加元素。这个方法是所有Array实例共享的。但是,每个数组实例也有自己的属性...

    Prototype Pattern原型模式

    如果原型对象包含引用类型的属性,这些引用会被共享在克隆后的对象中。 - **深复制(Depth Copy)**:不仅复制对象本身,还递归地复制它引用的对象,确保所有引用的对象都有独立的副本。 ### **应用场景** 1. 当创建...

    JavaScript对象模型-执行模型

    这些内置对象本质上都是函数的派生类型,可以通过继承的方式实现新的功能。例如,`Number`对象既可以作为构造函数使用,也可以通过继承`Function`对象来扩展其功能。 ##### 2. 数据类型实现模型 - **Build-in data...

    探索JavaScript的原型链:原型继承的奥秘

    3. **自动内存管理**:内置的垃圾回收机制自动管理内存,释放不再使用的对象。 4. **动态类型**:变量的类型是在运行时确定的,不需要显式声明类型。 5. **弱类型或松散类型**:允许变量存储不同类型的数据,自动...

    设计模式C++学习之原型模式(Prototype)

    在Demo20_Prototype中,我们可以看到具体的原型模式实现示例,它可能包含了不同类型的原型对象以及如何通过克隆接口创建新对象的代码。这个例子将帮助我们更好地理解和应用原型模式,提高编程效率和代码质量。 总结...

    C#面向对象设计模式纵横谈(6):Prototype 原型模式(创建型模式)

    在C#中,原型模式还可以与其他设计模式结合使用,如工厂模式,可以将原型模式作为工厂方法的一部分,使得用户能够请求特定类型的对象实例,而无需了解如何创建它们。 总的来说,原型模式在C#中是一个非常实用的设计...

    JavaScript中的原型和继承详解(图文)_.docx

    例如,数组对象具有内置的方法如 push、reverse 和 pop,这些方法允许我们操作数组对象。 二、原型 接下来,我们来看原型。在 JavaScript 中,每个对象都拥有一个原型,它是一个隐藏的属性,指向另一个对象,也...

    js自定义对象讲解

    通过`prototype`,我们可以扩展内置对象的功能,比如为String对象添加trim()方法。JavaScript的独特之处在于,对象的属性可以在运行时动态添加,这是静态类型语言如Java所不具备的特性。 1.3 语法规则 1.3.1 对象...

    设计模式之原型模式

    在Java等面向对象语言中,原型模式通常利用内置的克隆(Clone)机制或者实现`Cloneable`接口来实现对象的复制。在某些情况下,如果类的构造函数非常复杂,或者初始化过程需要消耗大量资源,那么使用原型模式将现有...

    JS内置对象和Math对象知识点详解

    JavaScript中的内置对象是ECMAScript标准提供的一组预先定义的对象,它们提供了许多常用的函数和属性。这些对象包括Array、Date、String、Number等,极大地方便了开发者进行各种操作。Math对象是其中之一,它不是一...

    浅析JavaScript中的对象类型Object_.docx

    JavaScript中的对象类型Object是语言的核心组成部分,它不仅构成了所有复杂数据结构的基础,还扮演着全局对象的角色,提供了许多内置的方法和属性。在这个浅析中,我们将深入探讨Object类型及其相关特性。 首先,...

    深度探讨javascript函数的原型链和闭包

    `[[Prototype]]`是每个JavaScript原生对象内置的原型属性,但不能直接访问,只能在查找原型链时由JavaScript引擎使用。它是JavaScript实现继承的基础。而`prototype`是函数对象的属性,可以直接通过JavaScript访问。...

    通过java实现原型模式(Prototype Pattern).rar

    在Java中,原型模式通常通过实现一个原型接口或抽象类,并在具体类中提供克隆方法来实现。...在实际应用中,如果原型类包含复杂的引用类型属性,需要特别注意实现深拷贝,以确保克隆对象与原对象完全独立。

    js面向对象简单理解

    在JavaScript中,每个对象都有一个内置的原型属性`__proto__`,它指向创建该对象的构造函数的原型。原型对象本质上也是一个对象,可以包含属性和方法,供实例对象共享。当试图访问一个对象的属性时,JavaScript会...

    举例说明JavaScript中的实例对象与原型对象

    JavaScript中的原型继承允许开发者通过原型来扩展构造函数创建的对象类型,而不需要在每个对象实例中都复制这些方法和属性,节省了内存。理解了实例对象与原型对象,可以帮助开发者更有效地利用JavaScript的对象继承...

Global site tag (gtag.js) - Google Analytics