var fn1 = function () {
var a = 10;
var b = function () { alert(123); };
var c = {
name: "lazy",
year: 1981
}
}var fn2 = function () {
this.a = 10;
this.b = function () { alert(123); };
this.c = {
name: "lazy",
year: 1981
}
}var fn3 = {
a: 10,
b: function (x) { alert(this.a + x); },
c: {
name: "lazy",
year: 1981
}
}问题:以上三种定义函数/对象的方式,有什么区别
3 回答
已采纳
stone310
TA贡献361条经验 获得超191个赞
第一种是函数内部变量,a,b,c属于私有变量,外界无法直接访问,可通过return返回或者闭包方法访问;
第二种a,b,c是定义函数(构造函数)的属性,当外部创建它的实例(new fn2())后,可访问;
var fn=new fn2(); console.log(fn.a) //10
第三种是json对象,内部a,b,c是键,对应的是值,外部可直接通过fn3.a访问
console.log(fn3.a) //10
堂堂堂堂糖糖糖童鞋
TA贡献101条经验 获得超58个赞
你可以看一下:自定义对象,函数定义与调用
其实,你这几种情况都不是闭包,
闭包条件:1、函数嵌套,2、内部函数引用外部函数变量
举个栗子:
var fn1 = function () { var a = 3; retrun function () { return a; } } console.log(fn1()())//输出a的值
闭包的作用:我们可以在全局范围内访问到函数内部的变量,并且私有化变量,因为我们不能对函数内部的变量进行更改。
添加回答
举报
0/150
提交
取消