您的位置:首页 > Web前端 > JavaScript

我对JS的理解

2015-12-02 19:03 507 查看

函数对象和一般对象的区别?

普通对象是键值对,JAVA中的哈希,没有构造函数概念,此类非彼类

为什么要有自调用?

没有类,没有构造函数,函数对象还是应该有初始化过程,自调用可以实现该效果。
定义的函数,只有执行了,函数内的局部变量才会申请内存空间。
所以JS函数对象才是真正类似于JAVA 类对象的概念。
而JS中的函数也不同于其他C,JAVA的函数,C, JAVA函数执行完后函数内的变量会清楚。
可以想象的是,JS函数对象中的变量要不像JAVA是分配在堆中,或者有其他持久保存的方式。
不然JS就low了。
http://www.runoob.com/js/js-function-closures.html 演示的闭包则使用了自调用(已贴到下面)

如何知道当前的函数的用法是普通函数还是对象?

http://www.runoob.com/js/js-function-invocation.html
函数名前面没有new, 后面带()表示函数调用。比如 var x = func(); 
函数名前有new
// This creates a new object
var x = new myFunction("John","Doe");
函数名后面用. 表示对象。比如 var txt = func.toString();

还有一种情况是,函数是对象,但是当成函数使用。调用call(), apply()
http://www.runoob.com/js/js-function-invocation.html

闭包是结合了对象和函数,自调用的最好例子
// add是变量,但是JS又声明一切皆对象 JavaScript
中的所有事物都是对象:字符串、数值、数组、函数… http://www.runoob.com/js/js-objects.html

var add = (function () {

    var counter = 0;
    return function () {return counter += 1;}
})();

add();  // add变量可以作为一个函数使用。
add();
add();

如此一来发现JS的函数太强大了!
而且语法比有类的OO语法更简洁

this与java this的不同?

JS当函数没有被自身的对象调用时, this 的值就会变成全局对象。
NodeJs的全局对象 http://www.runoob.com/nodejs/nodejs-global-object.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: