练习题 - js函数
代码贴出来
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函数的更多相关文章
- Js函数初学者练习(一)switch-case结构实现计算器。
前 言 JRedu 给大家介绍一点JS函数的练习题希望初学者多做一些练习能够更好的掌握JS的函数,以及能够提升大家的逻辑思维.(我也是个渣渣希望路过的大神多提建议或意见) 希望能够对大家有所帮助 ...
- 3.3 js函数
1.函数语法: 函数声明的方式:function 函数名(参数1,参数2-){//函数体;}函数调用:函数名(参数1,参数2-); 函数内不一定都指定返回值. 如果需要指定返回值,可用 return ...
- Js函数function基础理解
正文:我们知道,在js中,函数实际上是一个对象,每个函数都是Function类型的实例,并且都与其他引用类型一样具有属性和方法.因此,函数名实际上是指向函数对象的指针,不与某个函数绑定.在常见的两种定 ...
- js函数表达式和函数声明的区别
我们已经知道,在任意代码片段外部添加包装函数,可以将内部的变量和函数定义"隐 藏"起来,外部作用域无法访问包装函数内部的任何内容. 例如: var a = 2; function ...
- 通用js函数集锦<来源于网络> 【二】
通用js函数集锦<来源于网络> [二] 1.数组方法集2.cookie方法集3.url方法集4.正则表达式方法集5.字符串方法集6.加密方法集7.日期方法集8.浏览器检测方法集9.json ...
- 通用js函数集锦<来源于网络/自己> 【一】
通用js函数集锦<来源于网络/自己>[一] 1.返回一个全地址2.cookie3.验证用户浏览器是否是微信浏览器4.验证用户浏览器是否是微博内置浏览器5.query string6.验证用 ...
- 100多个基础常用JS函数和语法集合大全
网站特效离不开脚本,javascript是最常用的脚本语言,我们归纳一下常用的基础函数和语法: 1.输出语句:document.write(""); 2.JS中的注释为//3.传统 ...
- JS函数
1.document.write(""); 输出语句2.JS中的注释为//3.传统的HTML文档顺序是:document->html->(head,body)4.一个浏 ...
- js函数和运算符
函数是由事件驱动或者它被调用时执行可重复使用的代码块. <script> function myFunction(){ Alert(“hello World!”): } </scri ...
随机推荐
- 打造颠覆你想象中的高性能,轻量级的webform框架-----如何替换webform的垃圾控件(第一天)
前文描述: 随着.net 推出 MVC框架以来,webform 与 mvc 的争论一直没有停止过,一直以来 mvc 的 拥护者远远高于 webform,但是webfrom的有些优势又是mvc而无法替 ...
- xtrabackup 安装
xtrabackup 安装 yum install -y perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL perl-Dige ...
- 【BZOJ1857】传送带(分治经典:三分套三分)
点此看题面 大致题意: 一个二维平面上有两条传送带\(AB\)和\(CD\),\(AB\)传送带的移动速度为\(P\),\(CD\)传送带的移动速度为\(Q\),步行速度为\(R\),问你从\(A\) ...
- 一键备份脚本 backup.sh
做网站最重要的是什么?数据!数据,是网站之本,备份,是每一个站长都应该重视的事情.但同时,备份也是一件繁琐和重复的事情.所以,这些事情,肯定能做到自动化的.下面来介绍一下这个一键备份脚本 backup ...
- python_54_函数调用函数
logger函数的定义要放在函数调用之前,在test1(1,2)前边,一下两种都可以 def test1(x,y): print(x,y) logger('Test1') def logger(sou ...
- AngularJs学习笔记-数据绑定、管道
数据绑定.管道 (1)数据绑定(Angular中默认是单向绑定) 1.[]方括号 可以用于子组件传值 由于是单向绑定,所以当子组件中的iStars属性发生改变时,不会影响到父组件中product.ra ...
- for循环语句中的先后执行顺序
for(int i=0;i<10;i++){ cout<<i; } 分析程序运行结果:for(cout<<"a";cout<<" ...
- Jquery的简单API
dsfsdjgsdjgsdjkg <script>console.log('erftwet')</script>
- 【转】C++ 值传递、指针传递、引用传递详解
而关于值传递,指针传递,引用传递这几个方面还会存在误区, 所有我觉的有必要在这里也说明一下~ 下文会通过例子详细说明哦 值传递: 形参是实参的拷贝,改变形参的值并不会影响外部实参的值.从被调用函数的角 ...
- vitrual box安装centos时一直黑屏的解决办法
趁着清明节没事,昨天看了mysql性能优化后,想装个linux系统学习下,linux一直是我的短板...之前是在vmware上安装ubuntu,买了新电脑后,听过virtual box相比vmware ...