情景一:
var yx01 = new function() {return “圆心”};
alert(yx01);
我们运行情景一代码,将返回显示“[object object] ”,此时该代码等价于:
function 匿名类(){
return “圆心”;
}
var yx01 = new 匿名类();
alert(yx01);
我们对情景一的代码进行下面改造:
var yx01 = new function() {return new String(”圆心”)};
alert(yx01);
我们运行,将会发现返回的是“圆心”,这是为什么呢?
只要 new 表达式之后的 constructor 返回(return)一个引用对象(数组,对象,函数等),都将覆盖new创建的匿名对象,如果返回(return)一个原始类型(无 return 时其实为 return 原始类型 undefined),那么就返回 new 创建的匿名对象。(谢谢 Lunatic_Sun ,描述更精准点)
由于 new String 会构造一个对象,而不是一个 string 直接量,... 3 条评论 »
2008-2-20 下午 - JS/Ajax/AS/Flex - function - javascript
对于许多想学习 JavaScript 的朋友来说,无疑如何选择入门的书籍是他们最头疼的问题,或许也是他们一直畏惧,甚至放弃学习 JavaScript 的理由。
在 JavaScript 方面,自己不是什么专家,也不是什么高手,但自己一路走来,JavaScript 从迷茫到认识,对于 JavaScript 书籍的认识或许还有些借鉴价值。
入门推荐首选书籍:《JavaScript DOM 编程艺术 》
当初读了不下 4 遍,书内容简单,易学,上手快,编程思想严谨。好的入门书,对你未来的编程都会有着深远的影响。此本书不辜负这个历史使命。
更详细的评论可以看 Realazy 在豆瓣上的评论在 豆瓣 上的评论《通往终点的过程与终点本身同样重要》
基础学习书籍:《JavaScript 权威指南》
《JavaScript DOM 编程艺术》只是入门,介绍了编程思想和很简单的程序语法以及 DOM 的基本方法。而《... 7 条评论 »
2008-1-30 下午 - JS/Ajax/AS/Flex - 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>
请尽量不执行,试着直接给出结果并给出理由。
这道题可以帮你温习很多内容(对象、类、原型、作用域、优先级等等),同时部分朋友也能学到很多知识。
更多请看:javascript的小小考题
...
0 条评论»
2007-9-20 下午 - JS/Ajax/AS/Flex - javascript
网上有这样一道题目:
一个字符串String=“adadfdfseffserfefsefseetsdg”,找出里面出现次数最多的字母和出现的次数。
经典的解答思路为:取出字符串的第一个字符(首字母),利用的字符串的 replace 方法将符合正则表达式(第一个字符)替代为空,此字母出现的次数为原始的字符串长度减去替代后的字符串长度。循环迭代找出长度最长的字母。
<script type=”text/javascript”>
var str =”adadfdfseffserfefsefseeffffftsdg”; //命名一个变量放置给出的字符串
var maxLength = 0; //命名一个变量放置字母出现的最高次数并初始化为0
var result = ”; //命名一个变量放置结果输入
while( str != ” ){ //循环迭代开始,并判断字符串是否为空
oldStr = str; //将原始的字符串变量赋值给新变量
getStr = str.substr(0,1); //用字符... 1 条评论 »
2007-9-5 下午 - JS/Ajax/AS/Flex - javascript