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

经典论坛的javascript小小考题

阅读更多
<script>
	function foo(){
		foo.abc = function(){alert('def')}
		this.abc = function(){alert('xyz')}
		abc = function(){alert('@@@@@')};
		var abc = function(){alert('$$$$$$')}
	}
	foo.prototype.abc = function(){alert('456');}
	foo.abc = function(){alert('123');}
	var f = new foo();
	f.abc();
	foo.abc();
	abc();
</script>


请尽量不执行,试着直接给出结果并给出理由。

这道题可以帮你温习很多内容(对象、类、原型、作用域、优先级等等),同时部分朋友也能学到很多知识。
分享到:
评论
8 楼 czwlucky 2008-12-01  
tidus 写道

foo.abc();              //在foo()中找到abc()方法,输出def, 如果找不到会跳出foo() 到外面找到abc ,输出123


我认为是因为在执行new foo() 时对foo.abc进行了重写导致的输出def,如果没有这一句,那么在foo(){}后面写的那句话就能起作用。
7 楼 songlipeng 2008-12-01  
tidus 写道
var f = new foo(); //新建了一个foo对象,注意这时个上下文环境到了foo()中
f.abc();      //查找这个对象的abc()方法,输出xyz, 注意如果找不到就会去f.prototype里找,到那时才会输出456
foo.abc();              //在foo()中找到abc()方法,输出def, 如果找不到会跳出foo() 到外面找到abc ,输出123
abc();                    //在window中找到abc()方法, ie抛错



我不知道我这样理解可以不
abc = function(){alert('@@@@@')}; 
var abc = function(){alert('$$$$$$')} 
是内部声明,外部不可以访问

对foo来说内部的高于外部的

所以先考虑
foo.abc = function(){alert('def')} 
this.abc = function(){alert('xyz')} 

然后考虑
foo.prototype.abc = function(){alert('456');} 
foo.abc = function(){alert('123');} 




6 楼 tidus 2008-11-21  
var f = new foo(); //新建了一个foo对象,注意这时个上下文环境到了foo()中
f.abc();      //查找这个对象的abc()方法,输出xyz, 注意如果找不到就会去f.prototype里找,到那时才会输出456
foo.abc();              //在foo()中找到abc()方法,输出def, 如果找不到会跳出foo() 到外面找到abc ,输出123
abc();                    //在window中找到abc()方法, ie抛错
5 楼 大猫汤姆 2008-11-18  
如此不规范的脚本语言,鄙视
4 楼 songlipeng 2008-11-18  
foo.prototype.abc = function(){alert('456');}
foo.abc = function(){alert('123');}
为什么不会覆盖foo里面的方法啊!

abc = function(){alert('@@@@@')};
var abc = function(){alert('$$$$$$')}
这两句,我明白,不用考虑
3 楼 songlipeng 2008-11-18  
看早就看过这个题目,一直都不知道为什么啊!可以解释一下吗?
2 楼 walkman 2008-11-17  
最初我以为执行结果应该如下:
var f = new foo(); 
f.abc();  // alert('xyz');
foo.abc();  // alert('def');
abc();  // alert('@@@@@');


结果在 firefox 中测试发现最后一句 abc() 是错误的
仔细一想才恍然,原来在一个函数中,会预先给 var 关键字定义的局部变量“分配空间”,所以一进入 foo 函数体的时候 abc 已经视为一个局部变量,虽然 abc = function(){alert('@@@@@')}; 这行看起来像是定义了一个全局变量,但它还是局部变量。所以在函数体外调用 abc() 理所当然的失败

呵呵,这样的题目挺有意思
1 楼 longleg 2008-11-17  
随后一行abc();是不是有问题啊?

相关推荐

    JavaScriptJquery考试题.pdf

    "JavaScript/JQuery考试题解析" 本文将对给定的JavaScript/JQuery考试题进行解析,涵盖JavaScript基本概念、JQuery语法、DOM操作、事件处理等多方面的知识点。 1. JavaScript语言的特点: JavaScript是一种基于...

    JavaScript上机实验题

    ### JavaScript上机实验题知识点概览 #### 一、JavaScript表达式和逻辑控制语句的使用 ##### 实验目的 1. **理解变量**: 学习如何声明变量、初始化变量及变量的作用范围。 2. **数据类型掌握**: 包括基本数据类型...

    JavaScript Jquery考试题.docx

    JavaScript Jquery考试题.docx

    JavaScript Jquery考试题.pdf

    JavaScript Jquery考试题.pdf

    JavaScript考试真题用于备考

    JavaScript考试真题用于备考

    经典的javascript网页特效代码 javascript特效

    在这个“经典的javascript网页特效代码”压缩包中,可能包含了多种JavaScript实现的网页特效代码示例。下面,我们将深入探讨JavaScript在网页特效方面的应用及其相关知识点。 一、DOM操作 JavaScript通过Document ...

    javascript经典效果示例

    在这个“javascript经典效果示例”压缩包中,我们很可能会找到一系列用于创建动态、引人入胜用户体验的代码片段。下面将详细讨论JavaScript在网页效果中的常见应用及其相关知识点。 1. **页面加载动画**:...

    经典的JAVASCRIPT CHM参考手册

    在"经典的JAVASCRIPT CHM参考手册"中,我们可以期待深入探讨这门语言的各种核心概念、语法特性以及实际应用。 JavaScript最初由Netscape公司的Brendan Eich在1995年创建,它并非Java语言的子集,尽管名字相似。...

    482个常用经典javascript源码javascript学习推荐.rar

    一共482个经典的javascript经典案例,对于学习javascript的人来说,可以尝试下载跟着操作,包括常见的按钮事件,标记,表单事件,表单特效,超链接操作,窗口事件,功能特效,时间日期,鼠标特效,数组,文件传输,...

    HTML+Javascript+CSS测试题

    此外,JavaScript还可以利用AJAX(Asynchronous JavaScript and XML)实现异步数据交换,更新部分页面内容,而无需刷新整个页面。ES6(ECMAScript 6)版本引入了很多新特性,如箭头函数、模板字符串、let和const变量...

    javascript中文经典帮助手册

    这份"JavaScript中文经典帮助手册"对于任何想要深入理解和掌握JavaScript的开发者来说,都是一份宝贵的资源。手册可能涵盖了语言的基础语法、核心概念以及高级特性,旨在帮助读者有效地学习和应用JavaScript。 ...

    javascript应用程序经典实例

    资源名称:Javascript应用程序经典实例   内容简介: 懂得Javascript语法是一回事,能够创建有用的应用程序就是另一回事了。虽然市面上有成打的Javascript图书教你怎么做,但实际上...

    javascript经典电子教案

    javascript经典电子教案,初学者的必备武器,老手的查询资料。

    JavaScript经典效果集锦

    根据给定的信息,“JavaScript经典效果集锦”这篇文章主要介绍了多种使用JavaScript实现的网页特效与功能。下面将对文章中提及的一些经典效果进行详细介绍。 ### 1. 实现小技巧 文章开头提到了几个简单的...

    经典的JavaScript实例

    在"经典的JavaScript实例"这个主题中,我们可以深入探讨JavaScript在实际应用中的多种技术和技巧。 首先,JavaScript允许开发者通过DOM(Document Object Model)操作网页内容。DOM是HTML和XML文档的结构化表示,...

    JavaScript编程考试题.pdf

    2. JavaScript基础:问题3探讨了在JavaScript中如何在状态栏显示信息,正确做法是B) `window.status = "put your message here"`。问题7考察了获得与数字7.25最接近整数的JavaScript语句,答案是C) `Math.round(7.25...

    Javascript经典案例javascript表单验证及事件

    Javascript经典案例javascript表单验证及事件

    一个适合初学者的经典的javaScript教程

    本教程针对初学者,旨在提供一个经典的学习路径,让你轻松掌握JavaScript的基础知识,并体验到编程的乐趣。 JavaScript,简称JS,是由Netscape公司的Brendan Eich在1995年发明的。它是一种解释型、弱类型的脚本语言...

    javascript 经典实例大全四

    在这个"JavaScript经典实例大全四"中,我们涵盖了各种主流的JavaScript实例代码,包括特效、广告和样式等多方面内容,旨在帮助开发者更好地理解和应用JavaScript。 一、基础语法与数据类型 JavaScript的基础语法...

    javascript 经典代码

    在JavaScript的世界里,经典代码通常指的是那些具有广泛实用性和深远影响力的代码片段,它们可以帮助开发者理解语言的核心概念,提高编程效率。 在标题"javascript 经典代码"中,我们可以推测这里涉及的是...

Global site tag (gtag.js) - Google Analytics