// 闭包:方法里返回一个方法
function a1(params) {
let a1 = 1
return function () {
return a1
}
}
//闭包存在的意义
//1.延长变量的生命周期(常驻内存)
//2.创建私有环境
let a = 1//全局变量 保存在scope中
function f1() {
let b = 1;//局部变量 保存在local中
console.log(a);
}
console.log(b);//报错
f1();
//AO作用域
//作用域链
let name = '1';
function f2() {
let name = '2';
function f3() {
let name = '3';
console.log(name);
}
f3()
}
f2();
function outter() {
let a1 = 1
let a2 = 2
return function inner() {
return a1
}
}
function f4() {
let res = outter()
console.log(res);
}
f4()
//ƒ inner() {
// return a1
// }
// vue data()函数
//每个组件都有私有作用域 obj会互相干扰
//prototype 原型 函数特有
//_proto_
// let obj = {};
// obj.prototype.a = ''//报错
// function name(params) {
// }
// name.prototype.a = ''
function Person() {
}
Person.prototype.name = '123';
Person.prototype.age = '18';
Person.prototype.getAge = function () {
console.log(this.age);
}
let person1 = new Person()
person1.age = 28
console.log(person1);
// 从当前实例属性去查找,如果找到了就返回,否则顺着原型链一层层往上找
// 直到找到null为止,如果都没有 就报错
// 实例的_proto_指向构造函数的prototype
本文详细解析了JavaScript中的闭包概念,包括其在延长变量生命周期和创建私有环境的作用;探讨了作用域链和AO作用域;以及Vue中的数据绑定与原型函数的特性。通过实例演示了原型链查找机制的工作原理。
1163

被折叠的 条评论
为什么被折叠?



