Open Bosn opened 10 years ago
蛋都要碎了。。不知道为何,之前做的没有存档,重新再做一次。。。
{}.toString
报错是因为{}
有3个功能,一个是代码块
,一个是函数声明
,一个是对象声明
。这里{}
被javascript
引擎解析为声明(似乎是因为这里函数声明优先解析)
,所以语法报错。({}).toString
这里的{}
就是一个对象了。({}.toString)
表达式中的{}
被解析为对象,所以这里不会报错。new Array(n+1).join(str)
for in
可以用来循环对象中所有的可枚举的属性(自身属性和继承属性),对象的内置方法如toString
是不可枚举的,我们平时给对象添加的属性,都是可以枚举的,(我们可以用Enumerable
来设置属性是否可枚举)var b = document.getElementsByTagName("*");
for(var i in b){
if(b[i].nodeType == 1){
Object.freeze(b[i]);
};
}
Object.freeze(document)
可以解决这个问题,加了这个。方法就改不了了。。。
问答题
编程作业
写一个函数对比数据结构上的差异。具体见comparer.js
答辩 30分钟