• js 的function为什么可以添加属性


    (1)
    function person(){
        this.name = 'Tom';
    }
    (2)
    function person(){}
    person.name = 'Tom';
    (3)
    function person(){}
    person.prototype.name = 'Tom'
    

    1是公有属性
    2是静态属性
    3是原型共享属性

    解释1: 

    因为 JS 里, 函数也是对象, 是 Function 的实例。

    function person(){
        this.name = 'Tom';
    }

    这时候一般把 person 当作构造函数。

    const demo = new person()

    name 属性是挂在 new 生成对象, 也就是 demo 上的。
    ps: 当然, 你也可以不用 new 调用 person。但是可能会发生不可预知的后果。


    function person(){}
    person.name = 'Tom';

    这是在函数对象上直接定义了 name 属性。


    function person(){}
    person.prototype.name = 'Tom'

    每个函数都会有一个 prototype 的属性(箭头函数除外)。 name 是放到原型属性上。
    每个用 new 调用生成的对象,都可以访问到它们构造函数原型上的 name 属性。

    解释2:

    因为Js里面函数也是对象。

    函数其实也有另一个写法就是

    a = new Function("return 1");

    图片描述

    函数也是new出来的,所以函数其实也是一个对象。所以对象可以添加属性。

  • 相关阅读:
    文件与流之动手动脑
    四则运算1.1版
    2018年11月16日编程体会
    JAVA(1)之关于对象数组作形参名的方法的使用
    re模块 时间模块
    日志模块
    软件开发目录规范
    模块和包
    内置函数
    匿名函数
  • 原文地址:https://www.cnblogs.com/hanguidong/p/9296647.html
Copyright © 2020-2023  润新知