文档章节

js原型转载一

李永china
 李永china
发布于 2016/04/25 10:26
字数 430
阅读 10
收藏 0

JS是一段一段执行的(以<script>标签来分割),执行每一段之前,都有一个“预编译”,预编译干的活是:声明所有var变量(初始为undefined),解析定义式函数语句。

还有个关于 "window作用域下,a = 1和var a = 1" 的区别的也很经典:

a = 1相当于window.a = 1,是动态地为window添加一个成员; 
var a = 1是在当前作用域(也就是window)下声明一个a,这个声明是在整个作用域内都有效的。 

换句话说,其实区别就在于var a = 1比a = 1多了一个声明的行为。 

再看几个例子:

1.

alert(t);
alert(
'ok');
= 2;

t未声明,执行报错。

2.

alert(t);
alert(
'ok');
var t = 2;

 

弹出undefined和ok。预编译的时候,声明了变量t;执行到alert(t)这行代码的时候,t尚未被赋值,所以弹出undefined。

3.

a();
function a() {}
alert(
'ok');

弹出ok。预编译的时候,解析了定义式函数语句function a() {},顺利执行。

4.

a();
var a = function() {};
alert(
'ok');

 

a不是函数,执行报错。预编译的时候,声明了变量a = undefined;执行到a()时,a还等于undefined,不是函数,所以执行a()会报错。

5.

复制代码

<script type="text/javascript">
    a();
    alert(
'first block');
</script>
<script type="text/javascript">
    alert(
'second block');
</script>

复制代码

 

6.

  1. 弹出second block。因为JS是一段一段执行的,第一段执行到a()的时候报错,整个第一段都不会再执行,第二段正常执行。

firefox下的还有个小技巧:

如果上述例子中该报错的没有报错,输入about:config, 搜索strict, 看下javascript.options.strict, 如果是false的把他改为true。


© 著作权归作者所有

李永china
粉丝 11
博文 233
码字总数 174289
作品 0
朝阳
程序员
私信 提问
JavaScript系列-JavaScript之原型和原型链

一、概述 JavaScript ,是一种面向对象的程序设计语言,但是 JS 本身是没有 “类” 的概念,JS 是靠原型和原型链实现对象属性的“继承”。 在理解原型前,需要先知道实例对象的构造函数是什么...

大灰狼的小绵羊哥哥
02/23
0
0
理解 JavaScript 中的原型

前言 JavaScript 中的原型一直是我很惧怕的一个主题,理由很简单,因为真的不好理解,但它确实是 JavaScript 中很重要的一部分,而且是面试的必考题,就算现在不懂,以后迟早有一天要把它弄懂...

4Ark
01/22
0
0
图解javascript原型链

作者: HerryLo 本文永久有效链接: https://github.com/AttemptWeb...... 原型链和原型对象是js的核心,js以原型链的形式,保证函数或对象中的方法、属性可以让向下传递,按照面向对象的说法,...

HerryLo
09/06
0
0
关于javascript的原型和原型链系列

关于javascript的原型和原型链,看我就够了(一) https://mp.weixin.qq.com/s/rxhAu9JW3Ji4uGhz3XW8Q 关于javascript的原型和原型链,看我就够了(二) https://mp.weixin.qq.com/s/uSPaW0y...

大灰狼的小绵羊哥哥
2018/11/10
0
0
JS中isPrototypeOf 和hasOwnProperty 的区别

JS中isPrototypeOf 和hasOwnProperty 的区别 ------- js使用in和hasOwnProperty获取对象属性的区别 JS中isPrototypeOf 和hasOwnProperty 的区别 1、isPrototypeOf isPrototypeOf是用来判断指......

Jack088
2018/08/18
30
0

没有更多内容

加载失败,请刷新页面

加载更多

谁说多功能和低价格不能兼得?Aspose系列产品1024购买指南请查收!

你还在为了Word、Excel、PDF、CAD等文档格式转换而发愁吗? 你是否在寻找一款能够在应用程序中文档管理的工具呢? Aspose——支持100多种文件格式创建、编辑、转换和打印! 往下看,找一找哪...

mnrssj
17分钟前
3
0
hbase客户端API

本章介绍用于对HBase表上执行CRUD操作的HBase Java客户端API。 HBase是用Java编写的,并具有Java原生API。因此,它提供了编程访问数据操纵语言(DML)。 HBaseConfiguration类 添加 HBase 的配...

水木星辰
17分钟前
3
0
[插件化开发] 1. 初识OSGI

初识 OSGI 背景 当前product是以solution的方式进行售卖,但是随着公司业务规模的快速夸张,随之而来的是新客户的产品开发,老客户的产品维护,升级以及修改bug,团队的效能明显下降,为了解...

IsaacZhang
17分钟前
4
0
Webstorm 环境使用 nuxt.js 做开发,@ 和 ~ 别名配置

好的IDE + 好的代码提示 = 高效率的开发 webstorm 设置@和~别名,有助于代码查看和跳转. step 0 在项目下创建一个webpack.config.js,内容如下: const path = require('path')module.exp...

皇虫
21分钟前
3
0
Knative 实战:基于 Knative Serverless 技术实现天气服务-下篇

上一期我们介绍了如何基于 Knative Serverless 技术实现天气服务-上篇,首先我们先来回顾一下上篇介绍的内容: 通过高德天气 API 接口,每隔 3 个小时定时发送定时事件,将国内城市未来 3 天...

Mr_zebra
39分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部