prototype
: 显式原型属性__proto__
: 隐式原型属性__proto__
: 在创建实例对象时被自动添加, 并赋值为构造函数的prototype值__proto__
属性, 它指向的就是原型对象__proto__
属性就形成了一个链的结构---->原型链Object.prototype === Function.prototype._proto_
?
/*测试题1: */
function a() {}
var a;
console.log(typeof a)
/*测试题2: */
if (!(b in window)) {
var b = 1;
}
console.log(b)
/*测试题3: */
var c = 1
function c(c) {
console.log(c)
var c = 3
}
c(2)
// 测试题1
var x = 10;
function fn() {
console.log(x);
}
function show(f) {
var x = 20;
f();
}
show(fn);
// 测试题2
var fn = function () {
console.log(fn)
}
fn()
var obj = {
fn2: function () {
console.log(fn2)
}
}
obj.fn2()
作用:
写一个闭包程序
function fn1() {
var a = 2;
function fn2() {
a++;
console.log(a);
}
return fn2;
}
var f = fn1();
f();
f();
问题:
函数执行完后, 函数内部声明的局部变量是否还存在?
一般是不存在, 存在于闭中的变量才可能存在
在函数外部能直接访问函数内部的局部变量吗?
不能, 但我们可以通过闭包让外部操作它
闭包应用:
缺点:
function fun(n,o) {
console.log(o)
return {
fun:function(m){
return fun(m,n);
}
};
}
var a = fun(0); a.fun(1); a.fun(2); a.fun(3);//undefined,?,?,?
var b = fun(0).fun(1).fun(2).fun(3);//undefined,?,?,?
var c = fun(0).fun(1); c.fun(2); c.fun(3);//undefined,?,?,?
原文:https://www.cnblogs.com/Liwker/p/14399249.html