代码贴出来

1		function Cat() {
2 getColor = function(){ console.log(1);}
3 return this;
4 }
5 Cat.getColor = function(){console.log(2);}
6 Cat.prototype.getColor = function(){console.log(3);}
7 var getColor = function(){console.log(4);}
8 function getColor() {console.log(5);}
9
10 // 输出结果
11 Cat.getColor();
12 getColor();
13 Cat().getColor();
14 getColor();
15 new Cat.getColor();
16 new Cat().getColor();
17 new new Cat().getColor();

首先我们来理理这些代码的执行顺序:

先声明

1、var getColor [7]

2、function Cat(){...} [1]

3、function getColor(){...} [8]

接下来顺序执行代码

4、Cat.getColor = function(){...} [5]

5、Cat.prototype.getColor = function(){...} [6]

6、getColor = function(){console.log(4);} [7]

7、Cat.getColor(); [11]

8、getColor(); [12]

9、Cat().getColor(); [13]

10、getColor(); [14]

11、new Cat.getColor(); [15]

12、new Cat().getColor(); [16]

13、new new Cat().getColor(); [17]

所以,

Cat.getColor() //2

∵根据4,Cat.getColor被赋值了一个function,现在执行这个function则打印出2.

【涉及对象的静态方法】

getColor() //4

∵根据6,getColor被赋值了一个function,现在执行这个function则打印出4.

【涉及变量的声明和赋值】

Cat().getColor() //1

∵这个是先运行Cat(),再点上getColor的;Cat()之后是返回this,Cat没有被实例化,所以this是window,同时因为Cat()执行之后getColor被重新赋值,所以打印出1.

【涉及函数的运行、变量作用域、this】

getColor() //1

∵前面的代码把getColor改变了,所以打印了1

【涉及变量的赋值】

new Cat.getColor();//2

这个先执行Cat.getColor()

可以这么理解:

var a = Cat.getColor;   // a = Cat.getColor = function(){console.log(2);}
new a(); //打印2

【涉及变量的赋值、对象的实例化】

new Cat().getColor();//3

这个先new Cat(),实例化了,实例化的getColor()是Cat.prototype.getColor = function(){console.log(3);}

可以这么理解:

var a = new Cat();        // 实例化Cat
a.getColor(); // 实例执行这个:Cat.prototype.getColor = function(){console.log(3)}

【涉及对象的实例化,实例的原型方法】

new new Cat().getColor();//3

这个先new Cat(),实例化了,实例化的getColor()是Cat.prototype.getColor = function(){console.log(3);},再new

可以这么理解:

var a = new Cat();        // 实例化Cat
var b = a.getColor; // 实例执行这个:b = Cat.prototype.getColor = function(){console.log(3)}
new b(); // 打印3

【涉及变量的赋值,对象的实例化,实例的原型方法】

练习题 - js函数的更多相关文章

  1. Js函数初学者练习(一)switch-case结构实现计算器。

      前  言 JRedu 给大家介绍一点JS函数的练习题希望初学者多做一些练习能够更好的掌握JS的函数,以及能够提升大家的逻辑思维.(我也是个渣渣希望路过的大神多提建议或意见) 希望能够对大家有所帮助 ...

  2. 3.3 js函数

    1.函数语法: 函数声明的方式:function 函数名(参数1,参数2-){//函数体;}函数调用:函数名(参数1,参数2-); 函数内不一定都指定返回值. 如果需要指定返回值,可用 return ...

  3. Js函数function基础理解

    正文:我们知道,在js中,函数实际上是一个对象,每个函数都是Function类型的实例,并且都与其他引用类型一样具有属性和方法.因此,函数名实际上是指向函数对象的指针,不与某个函数绑定.在常见的两种定 ...

  4. js函数表达式和函数声明的区别

    我们已经知道,在任意代码片段外部添加包装函数,可以将内部的变量和函数定义"隐 藏"起来,外部作用域无法访问包装函数内部的任何内容. 例如: var a = 2; function ...

  5. 通用js函数集锦<来源于网络> 【二】

    通用js函数集锦<来源于网络> [二] 1.数组方法集2.cookie方法集3.url方法集4.正则表达式方法集5.字符串方法集6.加密方法集7.日期方法集8.浏览器检测方法集9.json ...

  6. 通用js函数集锦<来源于网络/自己> 【一】

    通用js函数集锦<来源于网络/自己>[一] 1.返回一个全地址2.cookie3.验证用户浏览器是否是微信浏览器4.验证用户浏览器是否是微博内置浏览器5.query string6.验证用 ...

  7. 100多个基础常用JS函数和语法集合大全

    网站特效离不开脚本,javascript是最常用的脚本语言,我们归纳一下常用的基础函数和语法: 1.输出语句:document.write(""); 2.JS中的注释为//3.传统 ...

  8. JS函数

    1.document.write(""); 输出语句2.JS中的注释为//3.传统的HTML文档顺序是:document->html->(head,body)4.一个浏 ...

  9. js函数和运算符

    函数是由事件驱动或者它被调用时执行可重复使用的代码块. <script> function myFunction(){ Alert(“hello World!”): } </scri ...

随机推荐

  1. DBMS事务的四大特性

    数据库事务的四大特性分别是:原子性.一致性.隔离性和持久性. 特性 说明 实现 一致性 在一个事务执行之前和执行之后数据库都必须处于一致性状态.假如数据库的状态满足所有的完整性约束,也可以说数据库是一 ...

  2. Mac终端下使用***

    首先安装proxychains: brew install proxychains-ng 然后创建文件~/.proxychains/proxychains.conf,写入以下内容: strict_ch ...

  3. java 实现猜数字游戏 随机给定一个数字,猜大小直到正确

    package com.swift; import java.util.Random; import java.util.Scanner; public class GuessBigSmall { p ...

  4. JAVA JDBC 连接 Oracle

    使用 Junit 测试类编写 public class JdbcTest { private Connection con = null;// 创建一个数据库连接 private PreparedSt ...

  5. 1074: [SCOI2007]折纸origami

    Time Limit: 20 Sec  Memory Limit: 162 MBSubmit: 372  Solved: 229[Submit][Status][Discuss] Descriptio ...

  6. 破解studio 3T

    方法一: 打开注册表:regedit 计算机\HKEY_CURRENT_USER\Software\JavaSoft\Prefs\3t\mongochef\enterprise 将里面得数据清零,又是 ...

  7. 十九、MySQL GROUP BY 语句

    MySQL GROUP BY 语句 GROUP BY 语句根据一个或多个列对结果集进行分组. 在分组的列上我们可以使用 COUNT, SUM, AVG,等函数. GROUP BY 语法 SELECT ...

  8. WebSocket 详解

    WebSocket 出现前 构建网络应用的过程中,我们经常需要与服务器进行持续的通讯以保持双方信息的同步.通常这种持久通讯在不刷新页面的情况下进行,消耗一定的内存资源常驻后台,并且对于用户不可见.在 ...

  9. 与SVN相关的程序的调试问题【转】

    解决eclipse中出现Resource is out of sync with the file system问题. 分析:有时候因为时间紧迫的原因,所以就没去管它,今天再次遇到它,实在看着不爽,所 ...

  10. Python周末21天笔记

    模块一: 基础相互据类型之间的相互转换 1. 字符串str 与 列表 list 与字典 dict 以及 元祖tuple的转换 例一: 把字典的key和value的值取出来,按照顺序存入到list中 d ...