zoukankan      html  css  js  c++  java
  • js 的function为什么可以添加属性

    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出来的,所以函数其实也是一个对象。所以对象可以添加属性。

    https://www.cnblogs.com/hanguidong/p/9296647.html

  • 相关阅读:
    c++运算符重载
    c++ const_cast
    SHL
    C++拷贝构造函数(深拷贝,浅拷贝)
    ps命令详解
    static 修饰符
    “宝洁八大问”整理篇
    linux grep命令
    C++操作符重载
    linux中删除指定日期之前的文件
  • 原文地址:https://www.cnblogs.com/zhangchs/p/11052227.html
Copyright © 2011-2022 走看看