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

  • 相关阅读:
    Java--笔记(4)
    Java--笔记(3)
    Java--笔记(2)
    Java--笔记(1)
    Java--剑指offer(10)
    Java--剑指offer(9)
    网络基础面试常考知识点
    Java--剑指offer(8)
    Keil C51 的printf
    C语言中以十六进制输出字符型变量会出现'ffffff"的问题
  • 原文地址:https://www.cnblogs.com/hanguidong/p/9296647.html
Copyright © 2020-2023  润新知