c语言sscanf函数的用法是什么
222
2022-09-06
函数高级② -- (原型链属性、instance、提升、执行上下文)
文章目录
原型链的属性问题instanceof变量提升与函数提升执行上下文
原型链的属性问题
读取对象的属性值时: 会自动到原型链中查找设置对象的属性值时: 不会查找原型链, 如果当前对象中没有此属性, 直接添加此属性并设置其值方法一般定义在原型中, 属性一般通过构造函数定义在对象本身上
从以下的例子中可以发现如上的规律:
function Fn() { } Fn.prototype.a = 'xxx' var fn1 = new Fn() console.log(fn1.a) //xxx var fn2 = new Fn() fn2.a = 'yyy' console.log(fn1.a, fn2.a) //xxx yyy
在fn2中:
instanceof
instanceof是如何判断的?
表达式: A instanceof B如果B构造函数的显式原型对象(prototype)在A对象的原型链上(换句话说有交点), 返回true, 否则返回false
Function是通过new自己产生的实例
我们可以通过以下的两个例子去理解instanceof: ①
/* 案例1 */ function Foo() { } var f1 = new Foo() console.log(f1 instanceof Foo) // true console.log(f1 instanceof Object) // true
原型链也叫做隐式原型链,所以我们的注意力要放在以__proto__为连接,以prototype为节点的线,那就是原型链。
②
/* 案例2 */ console.log(Object instanceof Function) // true console.log(Object instanceof Object) // true console.log(Function instanceof Function) // true console.log(Function instanceof Object) // true function Foo() {} console.log(Object instanceof Foo) // false
变量提升与函数提升
验证:
有一个需要的点:
var fn3 = function () { console.log('fn3()') }
执行上下文
①代码分类(位置)
全局代码函数(局部)代码
② 全局执行上下文
在执行全局代码前将window确定为全局执行上下文对全局数据进行预处理
开始执行全局代码
③函数执行上下文
在调用函数, 准备执行函数体之前, 创建对应的函数执行上下文对象(虚拟的, 存在于栈中的封闭区域,对外不可见)对局部数据进行预处理
开始执行函数体代码
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~