`
zhouyrt
  • 浏览: 1125619 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JavaScript中的不可见数据类型

 
阅读更多

JS提供了一些内置对象、函数和构造器供我们编程,如Math、parseInt、Object、Array等。这些都是可见的,编程时可以使用的。比如我可以new Object 或 new Array。

 

有一些则是不可见的,这些对象只能由引擎在特殊的情形提供。这些类型的对象往往还被消减了一些功能。下面列举一些

 

一、Arguments 类型

Arguments 类型 不能由程序员手动创建其对象,即你不能 new Arguments() 。 它有且仅有一个对象arguments

function func() {
    console.log(arguments[0])     // 1
    console.log(arguments.length) // 3
}
func(1, 2, 3)

arguments对象是在函数调用的时候创建的,只在函数内部可见和使用。可以看到arguments很象Array,可以按索引取元素,也有length属性。但它不是Array,它没有Array的有一些方法比如push、pop等。Arguments 在ES5 10.6 里定义。

 

二、bind返回的函数很特殊

bind是ES5给Function.prototype新增的一个方法,它和call/apply一样在function上直接调用。它返回一个指定了上下文和参数的函数。

function func(age) {
    console.log('name: ' + this.name + ', career: ' + age)
}
var person = {name: 'John McCarthy'}
var f1 = func.bind(person, 'computer scientist')
f1() // name: John McCarthy, career: computer scientist

可以看到返回的函数f1和普通函数一样使用小括号执行调用了。 一切正常,但下面的代码会让你大跌眼镜

function func(age) {
    console.log('name: ' + this.name + ', career: ' + age)
}
var person = {name: 'John McCarthy'}
var f1 = func.bind(person, 'computer scientist')
console.log(f1.prototype) // undefined

和上面代码比较,就最后一句不同,没有执行f1(),而是打印出f1.prototype,发现是undefined。

奇怪吗? 每个function不都有一个prototype属性吗,这是用来实现原型继承的哦。的确,bind返回的function比较特殊,它没有prototype。这种特殊的函数是由JS引擎创建的,客户端程序员没法通过函数声明或函数直接量得到。

 

这一点在规范里有明确提示 ES5 15.3.4.5


 

 

三、大家补充...

 

  • 大小: 11 KB
分享到:
评论

相关推荐

    JavaScript 动态网页实例 - 数据类型转换.rar

    类型转换是网页编程不可或缺的内容,本文先介绍自动类型转换,...在数值数据类型中,还有NaN等特殊值。JavaScript 是一种松散类型、动态类型的语言,在声明变量时无需指定数据类型,使JavaScript 具有灵活性和简单性。

    解析JavaScript中的不可见数据类型

    主要是对JavaScript中的不可见数据类型进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助

    编写可维护的JavaScript(中文)

    《编写可维护的JavaScript》向开发人员阐述了如何在团队开发中编写具备高可维护性的JavaScript代码,书中详细说明了作为团队一分子,应该怎么写JavaScript。本书内容涵盖了编码风格、编程技巧、自动化、测试等几方面...

    【JavaScript源代码】JavaScript类型检测的方法实例教程.docx

     JavaScript是web前端广泛应用的语言之一,在网页应用制作、脚本制作、小程序等诸多领域具有不可替代的的地位。笔者学习了一端时间的前端,颇感JS知识点的繁碎,故将学习到的一些知识、思考和感悟记录下来。 ...

    JavaScript异常处理

    在代码的运行过程中,错误是不可避免的,总的来说,错误发生于两种情况:一是程序内部的 逻辑或者语法错误,二是运行环境或者用户输入中不可预知的数据造成的错误。对于前者,就称之为错误(error),可以通过调试...

    简单介绍JavaScript的变量和数据类型

    JavaScript数据类型: 编程语言的最根本的特征之一是一组它支持的数据类型。这些是可被表示和操纵的编程语言的值的类型。 JavaScript允许有三个基本数据类型: 数字如. 123, 120.50 等. 字符串如 “This text ...

    JavaScript零基础入门到精通视频教程

    第01节 JavaScript面试中不可忽视的小问题\JavaScript视频课程-第01节 JavaScript面试中不可忽视的小问题 第02节 变量与常量\JavaScript视频课程-第02节 变量与常量 第03节 函数\JavaScript视频课程-第03节 函数 第...

    Javascript ES6中数据类型Symbol的使用详解

    Symbol 是一种特殊的、不可变的数据类型,可以作为对象属性的标识符使用,表示独一无二的值。Symbol 对象是一个 symbol primitive data type 的隐式对象包装器。 它是JavaScript语言的第七种数据类型,前6种分别是:...

    JavaScript入门篇,JavaScript基础知识

    这包括了学习如何创建JavaScript代码块,熟悉JavaScript的基本对象,了解语法规则和数据类型,以及掌握流程控制与错误处理的方式。此外,对于初学者来说,一些优质的学习资源也是不可或缺的。例如,《深入浅出...

    JavaScript核心技术 PDF扫描版

    第2章JavaScript数据类型与变量 2.1变量的标识 2.2作用域 2.3简单类型 2.4常量:有名称但不改变 2.5习题 第3章运算符和语句 3.1JavaScript语句的格式 3.2简单语句 3.3条件语句和程序流 3.4条件运算符 3.5逻辑运算符 ...

    详解javascript中原始数据类型Null和Undefined

    当讨论JavaScript中的原始数据类型时,大多数人都知道的基本知识,从String,Number到Boolean。这些原始类型相当简单,行为符合常识。但是,本文将更多聚焦独特的原始数据类型Null和Undefined,是什么让他们如此相似...

    javascript完全学习手册1 源码

    2.1.1 数据类型 19 2.1.2 变量和常量 22 2.1.3 表达式 24 2.1.4 运算符 24 2.2 流程控制 27 2.2.1 条件语句 27 2.2.2 循环语句 30 2.2.3 其他语句 35 2.3 使用对话框 38 2.3.1 警告对话框 38 2.3.2 确认对话框 40 ...

    javascript 使用手册

    即变量在使用前不需作声明,而是解释器在运行时检查其数据类型。  第五,代码格式不一样。Java是一种与HTML无关的格式,必须通过像HTML中引用外媒体那么进行装载,其代码以字节代码的形式保存在独立的文档中。...

    JavaScript详解(第2版)

     第3章 数据类型、字面量和变量   3.1 数据类型   3.1.1 基本数据类型   3.1.2 复合数据类型   3.2 变量   3.2.1 有效变量名   3.2.2 声明和初始化变量   3.2.3 动态或宽松类型语言   ...

    JavaScript权威指南(第6版)中文文字版

    3.7 不可变的原始值和可变的对象引用 47 .3.8 类型转换 48 3.9 变量声明 55 3.10 变量作用域 56 第4章 表达式和运算符 60 4.1 原始表达式 60 4.2 对象和数组的初始化表达式 61 4.3 函数定义表达式 62 4.4 属性访问...

    JavaScript版 数据结构与算法

    1-1 课程导学 试看 1-2 学习姿势 1-3 说明与承诺第2章 基础算法之“字符串类”字符串作为JS最基本的数据类型,掌握好字符串类型的算法题目是学习算法最好的入门阶梯,也是业务开发中最受用的部分之一。 2-1 环境...

    JavaScript中值类型和引用类型的区别

    JavaScript的数据类型分为两类:原始类型和对象类型。其中,原始类型包括:数字、字符串和布尔值。此外,JavaScript中还有两个特殊的原始值:null和undefined,它们既不是数字也不是字符串,更不是布尔值。它们通常...

    程序天下:JavaScript实例自学手册

    9.36 使用JavaScript向表格中写入数据 9.37 类C# GridView的编辑效果(一) 9.38 类C# GridView的编辑效果(二) 第10章 单选框和复选框 10.1 选择了哪一个单选框 10.2 单击文字实现单选框的选定 10.3 被选中的复选...

    JavaScript面向对象编程指南(第2版)

    依次介绍了JavaScript的发展历史、基础性话题(变量、数据类型、数组、循环以及条件表达式)、函数、对象、原型、继承的实现、BOM和DOM等。附录部分包括了学习JavaScript编程常用的参考资源。尤其值得一提的是,本书...

Global site tag (gtag.js) - Google Analytics