函数的3种角色

编程入门 行业动态 更新时间:2024-10-08 02:28:43

<a href=https://www.elefans.com/category/jswz/34/1771370.html style=函数的3种角色"/>

函数的3种角色

函数的3种角色

函数数据类型 & 对象数据类型

函数数据类型:

普通函数

类 自定义类和内置类:

……

要知道哪些是函数哪些是对象,这样我才知道谁有prototype谁有__proto__

对象数据类型的特点:

每个对象数据类型的值都是由0-多组键值对组成,键值对即属性名和属性值,

函数的3种角色

普通函数:

形参/实参,arguments,return,箭头函数

当做普通函数执行的时候,全程跟prototype没有关系,因为prototype里的东西都是给当前类的实例调取用的。跟普通函数自上而下执行没有关系,普通函数执行完内存释放。

同一个函数两种角色之间是没有关系的。

普通函数:执行干点事,重点是闭包,私有+全局,作用域链。

构造函数:类和实例,原型和原型链,走的是这一套。

普通对象:2个属性:name和length-形参个数。只跟键值对有关系。

__proto__:指向所属类的原型。每个对象都天生自带__proto__,每个函数都天生自带prototype

*整个原型链 & 整套OOP

更上层的东西:

函数也是对象,它也有一个__proto__,__proto__这个属性指向的永远都是所属类的原型。你自己自定义的函数,都是Function这个内置类的实例。

  1. 每一个函数都是Functon这个内置类的实例;

而Function本身又是一个函数,而上一句话每个函数都是Function这个类的实例,所以Functon.__proto__指向的是它自己的prototype。所以由此可见,Function是一个很特殊的内置类。这里有点绕:所有的函数都是我的实例,然后我本身也是一个函数,所以我就是我自己的实例。

  1. 所有对象都是Object这个类的实例;

  2. 函数也是对象,所以函数也是Object这个类的实例,所以万物皆对象。

object:作为对象的方法。Object.create,Object.assign......

所以最后的值都指向了Object.prototype,这就是万物皆对象。

阿里面试题

解题思路:

变量声明:var一定是只声明,function一定是声明+赋值(定义)

函数执行,首先看是不是私有变量,不是就往上级作用域查找

运算符的优先级:

成员访问 . 一般是很高的。

new()和 . 是一样的优先级,所以谁在左边谁先运算

然后再是new不带()

带参new和点. 是同级的,所以谁在左边谁就先执行

  1. 先new Foo()

  2. 再f.getName()

function Foo(){getName=function(){console.log(1);}return this;
}
Foo.getName=function(){console.log(2);
}
Foo.prototype.getName=function(){console.log(3);
}
var getName=function(){console.log(4);
}
function getName(){console.log(5);
}
Foo.getName();
getName();
Foo().getName();
getName();
new Foo.getName();
new Foo().getName();
new new Foo().getName();

闭包的开胃题

// 一道闭包的开胃题
function fun(n,o){console.log(o)return {fun:function(m){return fun(m,n)}}
}
var c=fun(0).fun(1);
c.fun(2);
c.fun(3);
// undefined
// 0
// 1
// 1

jquery源码初步分析

  1. typeof window !== 'undefined'

window只要存在就不可能是undefined,所以!=='undefined'就代表是浏览器环境;

node环境下让它为global;

  1. typeof module === 'object' && typeof module.exports === 'object'

判断是node环境

jQuery.fn = jQuery.prototype

它绕了一圈又指回来了。。

  1. 首先是在原型上添加了一个init方法

new jQuery.fn.init=function...

  1. 然后又把init的原型指向了jQuery.prototype

init.prototype=jQuery.fn=jQuery.prototype

更多推荐

函数的3种角色

本文发布于:2024-02-26 01:51:39,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1700971.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:函数   角色

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!