1.匿名函数在JavaScript中是很常见的,也算是个零碎的知识点,值得记录。
匿名函数顾名思义就是没有名字的函数,这种函数在JavaScript中的写法也很多,我参考了书本以及网上的别人的博客,总结出以下几种:
//常见写法
(function() {
alert('water');
})();
//带参数写法
(function(o) {
alert(o);
})('water');
//匿名函数链式调用
(function(o) {
alert(o);
return arguments.callee;
})('water')('down');
//不常见的匿名函数
~(function(){
alert('water');
})();
//据说效率最高的写法不懂
void function(){
alert('water');
}();
+function(){
alert('water');
}();
-function(){
alert('water');
}();
!function(){
alert('water');
}();
(function(){
alert('water');
}());
要说一句的是,我作为新人,经验尚少,很多地方需要看别人的总结的博客,但是自身可能没真正接触过,记录到自己博客中,为了以后方便自己的学习工作。
2.new关键字
在JavaScript中new的作用不如Java中new的作用大,但是也是很重要的一个知识点。
看个例子:
在firebug中的结果:
可以看到 a是一个function对象, b则是一个字符串。
可以这样理解,new一个对象时,就是创建了一个这个对象的实例。
var obj = new Base();
实际上JavaScript引擎模型中的样子是
也就是说过程是:
var obj = {};
obj.__proto__ = Base.prototype;
Base.call(obj);
我之前也提到了,__proto__是对象隐藏属性,指向他所继承对象,prototype只有函数才有。