js筆記三十七之函數(shù)的三種角色
標(biāo)簽:
JavaScript
function Fn(){ this.x = 100; } Fn.prototype.getX() = function(){ console.log(this.x); }var f = new Fn;
函数本身也会有一些自己的属性:
length: 0 形参的个数
name: "Fn" 函数名
prototype 类的原型,在原型上定义的方法都是当前Fn这个类实例的公有方法
__ proto__: 把函数当做一个普通对象,执行Function这个类的原型
函数在整个js中是最复杂也是最重要的知识
一个函数存在了多面性:
"
普通函数
": 它本身就是一个普通的函数,执行的时候形成私有的作用域(闭包),形参赋值,预解释,代码执行,执行完成后栈内存销毁/不销毁"
类
": 它有自己的实例,也有一个叫做prototype属性是自己的原型,它的实例都可以指向自己的原型"
普通对象
": 和 var obj = {}中的obj一样,就是一个普通对象,它作为对象可以有一些自己的私有属性,也可以通过__ proto__找到Function.prototype
三者之间互不冲突,没有任何关系
function Fn(){ var num = 500; this.x = 100; }; Fn.prototype.getX() = function(){ console.log(this.x); }; Fn.aaa = 1000;var f = new Fn; // Fn中的this是ff.num // -> undefinedf.aaa // -> undefined var res = Fn(); // Fn中的this是windowres // undefinedFn.aaa // 1000
作者:uplyw
链接:https://www.jianshu.com/p/e391c71d74c6
點(diǎn)擊查看更多內(nèi)容
為 TA 點(diǎn)贊
評(píng)論
評(píng)論
共同學(xué)習(xí),寫(xiě)下你的評(píng)論
評(píng)論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得
100積分直接送
付費(fèi)專(zhuān)欄免費(fèi)學(xué)
大額優(yōu)惠券免費(fèi)領(lǐng)