`
panzertank
  • 浏览: 16530 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

(转)通过使用Chrome的开发者工具来学习JavaScript

 
阅读更多

(转)http://www.qianduan.net/use-the-chrome-developer-tools-to-learn-javascript.html

 

本文作者是Peter Rybin,Chrome开发者工具团队成员.

本文中,我们将通过使用Chrome的开发者工具,来学习JavaScript中的两个重要概念”闭包”和”内部属性”.

闭包

首先要讲的是闭包(closure) – JavaScript中最有名的东西之一.一个闭包就是一个使用了外部变量的函数.查看下面的例子:

1
2
3
4
5
6
7
8
9
function A(a, b, c) {
  var ar = [a, b, c];
  return function B(i) {
    return ar[i];
  };
}
 
var b = A('Here', 'I', 'am');
console.log( b(1) );

函数声明之后的第一条语句调用了函数A,函数A创建了一个值为数组[a,b,c]的局部变量ar,返回了一个函数B(存储在了变量b中),然后运行结束.

第二条语句调用了函数B (b),返回并打印出了数组ar.这就意味着A中的数组ar在A结束执行后仍然存在.但是它存储在什么地方呢?当然,在b上!但是究竟是存在b的哪里呢?某个属性中?不是的.

这是JavaScript语言的一个核心特性:一个函数可以持有外层作用域的变量,并且除了调用该函数以外没有任何其他方法可以访问到这些变量.

从现在开始,chrome的开发者工具可以让闭包中的外部变量现形.在监控表达式(Watch Expressions)面板中查看函数实例b,展开它的属性后,应该会有一个称为<function scope>的子节点.所有被绑定的闭包变量都能在这里看到,这些变量就是在函数调用时可能会被用到的变量.

内部属性

开发者工具还能显示出另外一个东西,叫做内部属性(internal property).

假设你的代码中有个变量s,而且还执行了下面这样的操作:

1
s.substring(1, 4)  // 返回'ell'

你觉得s肯定是个字符串值吗? 这可不一定.它也有可能是个字符串包装对象.尝试下面的监控表达式:

1
2
"hello"
Object("hello")

第一个表达式是一个普通的字符串字面量,第二个是一个功能完整(full-featured)的对象.令人费解的是,这两个值几乎有完全相同的表现.但是第二个表达式才真正的拥有自己的属性,并且你也可以在它身上添加自定义的属性.展开它的所有属性你会看到,它不是一个完全常规的对象:它有一个内部属性[[PrimitiveValue]] ,被包装的字符串值就存储在这个属性里面.你不能在JavaScript代码中访问到这个内部属性,但是你能在开发者工具的中看到它.

还有哪些值拥有内部属性?那就是绑定函数(bound function).绑定函数也算是一种包装对象,只不过被包装的是个函数.尝试执行下面的两条语句:

1
2
function Sum(a, b) { return a + b; }
var inc = Sum.bind(null, 1); // 将形参a绑定为1,this绑定为null

如果你把Sum和inc放在监控表达式面板中对比一下,你会看到,它们都是函数,但inc是一个不透明(non-transparent )的函数:你看不到它的函数体内容,也不能看到它定义时的作用域.

这就是绑定函数的工作原理.在开发者工具中,你会看到[[TargetFunction]], [[BoundArgs]]以及[[BoundThis]]这三个内部属性.它们都表明了inc是一个绑定函数,以及一些更具体的信息:inc绑定的目标函数是Sum,绑定了一个参数1,绑定的this值是null.

原文:https://gist.github.com/4158604

分享到:
评论

相关推荐

    Chrome 开发者工具中文手册

    Chrome开发者工具是Google Chrome浏览器内置的一套强大的网页开发和调试工具,它为前端开发者提供了丰富的功能,包括元素检查、网络监控、源代码编辑、性能分析等。这份“Chrome开发者工具中文手册”旨在帮助用户...

    轻松玩转chrome开发者模式

    学习前端开发的过程中,不仅要掌握基本的HTML、CSS、JavaScript知识,还要学会使用各种辅助工具来提高开发效率。Chrome开发者工具无疑是其中最重要的一款工具之一。建议初学者从基础开始逐步深入学习,同时积极参与...

    chrome-inspect离线开发者工具包@194530_@196351.rar

    这个"chrome-inspect离线开发者工具包@194530_@196351.rar"文件很可能包含了离线版本的Chrome开发者工具,这在没有网络连接或者需要在隔离环境中工作的场景下特别有用。 Chrome Inspect 主要由以下几个关键组件组成...

    DevTools:使用 Chrome 开发者工具说明基本 Javascript 调试的单页应用程序

    用于说明使用 Chrome 开发人员工具进行基本 Javascript 调试的基本单页应用程序。 克隆回购 CD 进入“DevTools”目录 对于开发,运行grunt serve 当你准备好构建你的项目时,运行grunt build 玩得开心!

    Google Chrome 开发者版.zip

    ### Chrome开发者版特点 1. **最新特性**:开发者版会首先包含谷歌即将推出的新功能和API,如WebAssembly、WebXR等新兴Web技术。 2. **持续更新**:开发者版每周或每两周更新一次,比稳定版更快,确保开发者能及时...

    chrome开发工具指南

    Chrome开发者工具是Google Chrome浏览器内置的一套用于网页和前端开发的调试工具,它允许开发者查看和修改页面的HTML、CSS和JavaScript代码,同时跟踪网络请求、性能分析和内存泄漏等信息。该工具的广泛使用,很大...

    21-Chrome开发者工具:利用网络面板做性能分析_For_vip_user_0011

    Chrome开发者工具是Google Chrome浏览器内置的一套网页制作和调试工具,对于前端工程师而言,它是深入理解页面工作原理、优化性能和调试问题的关键。这个模块主要关注页面的源头和网络数据的接收,这些信息都可以在...

    Vue开发者工具,Chrome插件

    Vue开发者工具是一款强大的Chrome浏览器扩展,专为Vue.js框架的开发者设计,用于增强对Vue应用的调试和分析能力。这个工具是由Vue的核心团队维护,并在持续更新中,以适应不断发展的Vue生态系统。在这个版本v6.1.4中...

    Chrome开发人员工具导出的har文件如何浏览

    在 Chrome 浏览器中,用户可以通过 F12 或者通过菜单→更多工具→开发者工具来打开开发者工具。在开发者工具中,用户可以看到浏览器缓存各种文件,包括 HTML、CSS、JavaScript、图片、视频等文件。 浏览和下载 har ...

    React Developer Tools-5.0.0 将 React 调试工具添加到 Chrome 开发者工具中

    它允许您在 Chrome 开发者工具中检查 React 组件层次结构。 您将在 Chrome DevTools 中看到两个新选项卡:“ Components”和“ Profiler”。 “组件”选项卡向您显示在页面上呈现的根 React 组件,以及它们最终...

    Chrome开发者工具介绍

    由于F12是前端开发人员的利器,所以我自己也在不断摸索中,查看一些博客和资料后,自己总结了一下来帮助自己理解和记忆,也希望能帮到有需要的小伙伴,嘿嘿!

    DHC插件(REST/HTTP API Client - Chrome开发者工具插件)

    总之,DHC插件是Chrome开发者工具箱中的一个重要组成部分,尤其对于Web开发者和API测试人员来说,它提供了一个高效、便捷的API测试和开发环境,极大地提高了工作效率。通过使用DHC,用户可以更专注于他们的核心任务...

    react Chrome插件开发者工具 react-devtools

    - `panel.html` 和 `main.html` 是React DevTools扩展的界面部分,分别代表了在Chrome开发者工具的不同面板显示的内容。 - `manifest.json` 是Chrome扩展程序的重要配置文件,它定义了扩展的元数据、权限和其他设置...

    如何使用chrome自带的Javascript调试工具

    Chrome 浏览器内置的 JavaScript 调试工具,又称为 Chrome DevTools,是开发者们进行前端调试的重要利器。它提供了丰富的功能,包括代码编辑、性能分析、网络请求检查、内存泄漏检测等,使得开发者能高效地定位和...

    chrome浏览器-vue开发者工具

    总的来说,Chrome浏览器的Vue开发者工具是Vue.js开发者不可或缺的利器,它提供了直观、高效且强大的调试和分析能力,使得Vue应用的开发变得更加便捷和高效。无论你是初学者还是经验丰富的开发者,熟练掌握Vue ...

    vue3开发者工具vue-devtools

    Chrome DevTools 是 Google Chrome 浏览器内置的一套强大的 Web 开发和调试工具,它允许开发者检查网页的结构、样式、网络请求、性能等各个方面,对网页进行实时修改并查看效果。Vue DevTools 就是基于 Chrome ...

    ChromeTools:在最新的Google Chrome浏览器中可以使用JavaScript ES6工具。 该存储库可以包含适用于Chrome中任何上下文的工具

    ChromeTools正是一个专为最新版Google Chrome浏览器设计的工具集合,充分利用了JavaScript ES6的新特性,旨在帮助开发者更高效地处理浏览器环境下的各种任务,无论是在浏览器、辅助程序、扩展程序还是应用程序中。...

    Vue.js devtools(Vue3开发者工具插件)

    Vue.js devtools是针对Vue3开发的浏览器扩展插件,它是前端开发者不可或缺的工具,尤其对于Vue项目的调试和性能优化至关重要。...总的来说,Vue.js devtools是Vue开发者提高效率、提升开发体验的必备工具。

Global site tag (gtag.js) - Google Analytics